update format
This commit is contained in:
+25
-10
@@ -6,18 +6,19 @@
|
||||
|
||||
计算机处理的数据除了数值,就是字符。字符处理的常见问题包括:
|
||||
|
||||
单词反转
|
||||
回文判断
|
||||
字符串的压缩
|
||||
字符串的排列和组合
|
||||
|
||||
字符串比较
|
||||
子串
|
||||
|
||||
* 单词反转
|
||||
* 回文判断
|
||||
* 字符串的压缩
|
||||
* 字符串的排列和组合
|
||||
* 字符串比较
|
||||
* 子串
|
||||
|
||||
|
||||
|
||||
### 链表
|
||||
|
||||
链表处理的常见问题包括:
|
||||
|
||||
* 链表反转
|
||||
* 链表中是否有环
|
||||
* 删除链表中的p节点,在p节点前面插入节点q, 要求O(1)复杂度
|
||||
@@ -25,7 +26,6 @@
|
||||
* 2个链表合并
|
||||
|
||||
|
||||
|
||||
### 堆和栈
|
||||
|
||||
这是最基本数据结构,相对容易理解
|
||||
@@ -34,21 +34,36 @@
|
||||
|
||||
### 数值问题
|
||||
|
||||
这部分都是一些数学几何计算方面的问题。
|
||||
这部分都是一些数学几何计算方面的问题。 主要有:
|
||||
|
||||
* 位运算
|
||||
* 随机数
|
||||
* 大数问题
|
||||
|
||||
|
||||
### 数组数列问题
|
||||
|
||||
|
||||
这部分的问题都集中在数据集合上。主要有:
|
||||
|
||||
* 数组排序
|
||||
* top-k
|
||||
* 子数组
|
||||
* 多个数组合并,交集
|
||||
|
||||
|
||||
### 矩阵
|
||||
|
||||
这部分都是矩阵和二维数组相关的问题。
|
||||
|
||||
|
||||
### 二叉树
|
||||
|
||||
|
||||
* 遍历
|
||||
* 翻转
|
||||
* 子树
|
||||
|
||||
|
||||
|
||||
### 图
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
|
||||
问题涉及有:
|
||||
|
||||
* 遍历
|
||||
* 翻转
|
||||
* 子树
|
||||
|
||||
|
||||
#### 把二元查找树转变成排序的双向链表
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
|
||||
这部分都是一些数学几何计算方面的问题。主要由:
|
||||
|
||||
* 位运算
|
||||
* 随机数
|
||||
* 大数问题
|
||||
|
||||
|
||||
### 字符串转整数
|
||||
|
||||
@@ -146,6 +152,28 @@ int div(const int x, const int y)
|
||||
|
||||
|
||||
|
||||
#### 数值的整数次方
|
||||
|
||||
题目:实现函数double Power(double base, int exponent),求base的exponent次方。
|
||||
|
||||
不需要考虑溢出。
|
||||
|
||||
分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码:
|
||||
```
|
||||
double Power(double base, int exponent)
|
||||
{
|
||||
double result = 1.0;
|
||||
for(int i = 1; i <= exponent; ++i)
|
||||
result *= base;
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
上面的代码没有考虑 exponent<0的情况。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### 求根号2的值
|
||||
|
||||
|
||||
+64
-84
@@ -1,4 +1,11 @@
|
||||
|
||||
这部分的问题都集中在数据集合上。主要有:
|
||||
|
||||
* 数组排序
|
||||
* top-k
|
||||
* 子数组
|
||||
* 多个数组合并,交集
|
||||
|
||||
|
||||
#### 求子数组的最大和(最大字段和)
|
||||
|
||||
@@ -145,11 +152,6 @@ int findaddends(int *data,int length,int sum,int *a,int *b);
|
||||
|
||||
|
||||
|
||||
|
||||
3. 有一个函数int getNum(),每运行一次可以从一个数组V[N]里面取出一个数,N未知,当数取完的时候,函数返回NULL。现在要求写一个函数int get(),这个函数运行一次可以从V[N]里随机取出一个数,而这个数必须是符合1/N平均分布的,也就是说V[N]里面任意一个数都有1/N的机会被取出,要求空间复杂度为O(1)
|
||||
|
||||
|
||||
|
||||
#### 找数组里面重复的一个数
|
||||
|
||||
找数组里面重复的一个数,一个含n个元素的整数数组至少存在一个重复数,
|
||||
@@ -320,30 +322,7 @@ isShunZi(int *a,int length)
|
||||
|
||||
|
||||
|
||||
|
||||
#### 数值的整数次方
|
||||
|
||||
题目:实现函数double Power(double base, int exponent),求base的exponent次方。
|
||||
|
||||
不需要考虑溢出。
|
||||
|
||||
分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码:
|
||||
```
|
||||
double Power(double base, int exponent)
|
||||
{
|
||||
double result = 1.0;
|
||||
for(int i = 1; i <= exponent; ++i)
|
||||
result *= base;
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
上面的代码没有考虑 exponent<0的情况。
|
||||
|
||||
|
||||
|
||||
|
||||
####
|
||||
#### 分割数组
|
||||
|
||||
一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。
|
||||
能否只用一个额外数组和少量其它空间实现。
|
||||
@@ -352,60 +331,6 @@ double Power(double base, int exponent)
|
||||
|
||||
|
||||
|
||||
////////////// 数列 ///////////////
|
||||
|
||||
输入a1,a2,...,an,b1,b2,...,bn,
|
||||
在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn,
|
||||
且不需要移动,通过交换完成,只需一个交换空间。
|
||||
|
||||
例如,N=9时,第2步执行后,实际上中间位置的两边对称的4个元素基本配对,
|
||||
只需交换中间的两个元素即可,如下表所示。颜色表示每次要交换的元素,左边向右交换,右边向左交换。
|
||||
交换过程如下表所示
|
||||
交换x1,x3;交换x2,x4;再交换中间的x1,x4;交换y1,y2。
|
||||
|
||||
|
||||
|
||||
|
||||
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
|
||||
要求下排每个数都是先前上排那十个数在下排出现的次数。
|
||||
上排的十个数如下:
|
||||
|
||||
【0,1,2,3,4,5,6,7,8,9】
|
||||
|
||||
初看此题,貌似很难,10分钟过去了,可能有的人,题目都还没看懂。
|
||||
|
||||
举一个例子,
|
||||
数值: 0,1,2,3,4,5,6,7,8,9
|
||||
分配: 6,2,1,0,0,0,1,0,0,0
|
||||
0在下排出现了6次,1在下排出现了2次,
|
||||
2在下排出现了1次,3在下排出现了0次....
|
||||
以此类推..
|
||||
|
||||
0xX0+1xX1+2xX2....+9xX9 = 10;
|
||||
X0+X1+...+ = 10;
|
||||
|
||||
转换成多元一次方程求通解的问题。(Matlib)
|
||||
|
||||
|
||||
|
||||
|
||||
一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
|
||||
比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;
|
||||
{3,6}{2,4,3} m=2
|
||||
{3,3}{2,4}{6} m=3 所以m的最大值为3
|
||||
|
||||
|
||||
|
||||
|
||||
给出两个集合A和B,其中集合A={name},
|
||||
集合B={age、sex、scholarship、address、...},
|
||||
要求:
|
||||
问题1、根据集合A中的name查询出集合B中对应的属性信息;
|
||||
问题2、根据集合B中的属性信息(单个属性,如age<20等),查询出集合A中对应的name。
|
||||
|
||||
|
||||
|
||||
|
||||
#### 约瑟夫环问题
|
||||
|
||||
n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,
|
||||
@@ -572,7 +497,6 @@ int print_sequence_sum(int n)
|
||||
第1500个: 1500/22=68余4,一个周期内的前4个数是2,3,4,5; 最终答案是`68*30+5`
|
||||
|
||||
|
||||
|
||||
|
||||
#### 调整数组顺序使奇数位于偶数前面
|
||||
|
||||
@@ -584,6 +508,7 @@ int print_sequence_sum(int n)
|
||||
```
|
||||
void reorder(int *data, int length);
|
||||
```
|
||||
|
||||
|
||||
#### 在从1到n的正数中1出现的次数
|
||||
|
||||
@@ -674,5 +599,60 @@ f(n)= 1 n=1
|
||||
|
||||
|
||||
|
||||
#### 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
|
||||
|
||||
比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;
|
||||
{3,6}{2,4,3} m=2
|
||||
{3,3}{2,4}{6} m=3 所以m的最大值为3
|
||||
|
||||
|
||||
|
||||
|
||||
////////////// 数列 ///////////////
|
||||
|
||||
输入a1,a2,...,an,b1,b2,...,bn,
|
||||
在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn,
|
||||
且不需要移动,通过交换完成,只需一个交换空间。
|
||||
|
||||
例如,N=9时,第2步执行后,实际上中间位置的两边对称的4个元素基本配对,
|
||||
只需交换中间的两个元素即可,如下表所示。颜色表示每次要交换的元素,左边向右交换,右边向左交换。
|
||||
交换过程如下表所示
|
||||
交换x1,x3;交换x2,x4;再交换中间的x1,x4;交换y1,y2。
|
||||
|
||||
|
||||
|
||||
|
||||
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
|
||||
要求下排每个数都是先前上排那十个数在下排出现的次数。
|
||||
上排的十个数如下:
|
||||
|
||||
【0,1,2,3,4,5,6,7,8,9】
|
||||
|
||||
初看此题,貌似很难,10分钟过去了,可能有的人,题目都还没看懂。
|
||||
|
||||
举一个例子,
|
||||
数值: 0,1,2,3,4,5,6,7,8,9
|
||||
分配: 6,2,1,0,0,0,1,0,0,0
|
||||
0在下排出现了6次,1在下排出现了2次,
|
||||
2在下排出现了1次,3在下排出现了0次....
|
||||
以此类推..
|
||||
|
||||
0xX0+1xX1+2xX2....+9xX9 = 10;
|
||||
X0+X1+...+ = 10;
|
||||
|
||||
转换成多元一次方程求通解的问题。(Matlib)
|
||||
|
||||
|
||||
|
||||
|
||||
给出两个集合A和B,其中集合A={name},
|
||||
集合B={age、sex、scholarship、address、...},
|
||||
要求:
|
||||
问题1、根据集合A中的name查询出集合B中对应的属性信息;
|
||||
问题2、根据集合B中的属性信息(单个属性,如age<20等),查询出集合A中对应的name。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user