update format
This commit is contained in:
+45
-39
@@ -1,13 +1,12 @@
|
||||
|
||||
《剑指offer》 这本书给出了50到面试题,涉及到字符串处理,堆栈,链表,二叉树等问题的处理。
|
||||
|
||||
代码鲁榜性:边界条件,特殊输入,异常处理:空指针
|
||||
分析方法:画图,举例,分解
|
||||
|
||||
查找和排序是常考:重点掌握二分查找,快速排序,归并排序
|
||||
>代码鲁榜性:边界条件,特殊输入,异常处理:空指针
|
||||
>分析方法:画图,举例,分解
|
||||
>查找和排序是常考:重点掌握二分查找,快速排序,归并排序
|
||||
|
||||
|
||||
1 赋值运算符函数
|
||||
1 赋值运算符函数
|
||||
2 实现Singleton模式
|
||||
|
||||
|
||||
@@ -15,12 +14,12 @@
|
||||
|
||||
|
||||
|
||||
4 替换空格。把字符串中的每个空格替换成 %20
|
||||
4 替换空格。如把字符串中的每个空格替换成`%20`
|
||||
`二遍扫描`
|
||||
|
||||
|
||||
|
||||
5 从尾到头打印链表
|
||||
5 从尾到头打印链表
|
||||
`栈`
|
||||
|
||||
|
||||
@@ -40,14 +39,16 @@
|
||||
9 菲波那切数列
|
||||
|
||||
|
||||
10 二进制中1的个数
|
||||
10 二进制中1的个数
|
||||
`n=n&n-1`
|
||||
|
||||
|
||||
|
||||
11 数值的整数次方。实现 double power(double base,int exponent)
|
||||
|
||||
11 数值的整数次方
|
||||
|
||||
```
|
||||
double power(double base,int exponent)
|
||||
```
|
||||
|
||||
|
||||
12 打印1到最大的n位数。 比如n=3,就打印1到999
|
||||
@@ -55,29 +56,34 @@
|
||||
|
||||
|
||||
|
||||
13 在O(1)时间删除链表节点,有一个头节点指针,还有一个指向改删除节点的指针
|
||||
13 在O(1)时间删除链表节点,有一个头节点指针,还有一个指向改删除节点的指针
|
||||
|
||||
`用下一个节点的内容覆盖当前删除节点的内容,删除下一个节点`
|
||||
|
||||
|
||||
14 调整数组顺序使奇数位于偶数前面。调整后,所有奇数在前半部分,偶数在后半部分
|
||||
|
||||
`两边向中间扫描`
|
||||
|
||||
|
||||
|
||||
15 输出链表中倒数第K个节点
|
||||
|
||||
`使用两个指针,一个先走k-1步`
|
||||
|
||||
|
||||
|
||||
16 反转链表
|
||||
|
||||
`三个指针`
|
||||
|
||||
|
||||
|
||||
反转二叉树
|
||||
反转二叉树呢?
|
||||
|
||||
|
||||
17 合并2个排序的链表,合并以后任然排序
|
||||
|
||||
`递归`
|
||||
|
||||
|
||||
@@ -87,14 +93,16 @@
|
||||
|
||||
|
||||
19 二叉树翻转
|
||||
|
||||
```
|
||||
8 8
|
||||
/ \ / \
|
||||
/ \ / \
|
||||
6 10 翻转后 10 6
|
||||
/ \ / \ / \ / \
|
||||
5 7 9 11 11 9 7 5
|
||||
```
|
||||
|
||||
|
||||
`交换每个节点的左右子树`
|
||||
|
||||
|
||||
@@ -105,6 +113,7 @@
|
||||
延伸:按大小顺序打印矩阵
|
||||
|
||||
21 实现一个能找到栈的最小元素的函数
|
||||
|
||||
`最小元素用辅助栈保存`
|
||||
|
||||
|
||||
@@ -112,34 +121,36 @@
|
||||
|
||||
|
||||
23 从上往下打印二叉树
|
||||
|
||||
`辅助队列`
|
||||
|
||||
|
||||
24 二叉搜索树的后续遍历序列。
|
||||
输入一个整数数组,判断该数组是不是某二叉查找树的后续遍历序列的结果
|
||||
24 二叉搜索树的后续遍历序列。输入一个整数数组,判断该数组是不是某二叉查找树的后续遍历序列的结果
|
||||
|
||||
`寻找规律`
|
||||
|
||||
【 5,7,6,9,11,10,8】 是下面儿茶查找树的后续遍历结果:
|
||||
|
||||
```
|
||||
8
|
||||
/ \
|
||||
/ \
|
||||
6 10
|
||||
/ \ / \
|
||||
5 7 9 11
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
25 二叉树中和为某一值的路径
|
||||
|
||||
```
|
||||
10
|
||||
/ \
|
||||
/ \
|
||||
5 12
|
||||
/ \
|
||||
5 7
|
||||
```
|
||||
|
||||
和为22的路径有2条:10--5--7, 10--12
|
||||
|
||||
@@ -159,6 +170,7 @@
|
||||
|
||||
|
||||
28 字符串的排列。输入一个字符串,打印该字符串中字符的所有排列
|
||||
|
||||
`递归,分解`
|
||||
|
||||
|
||||
@@ -175,7 +187,7 @@ int moreThanHalfNum(int *nums ,int length)
|
||||
`快速排序` `最大堆`
|
||||
|
||||
|
||||
最大的K个数
|
||||
最大的K个数呢?
|
||||
|
||||
|
||||
31 连续子数组的最大和
|
||||
@@ -183,14 +195,12 @@ int moreThanHalfNum(int *nums ,int length)
|
||||
`分析规律` `动态规划`
|
||||
|
||||
|
||||
32 从1到n整数中,1出现的次数
|
||||
比如 12,从1到12这些整数中,包含1的数字有 1, 10,11,12 ,1出现了5次
|
||||
|
||||
``
|
||||
32 从1到n整数中,1出现的次数。比如 12,从1到12这些整数中,包含1的数字有 1, 10,11,12 ,1出现了5次
|
||||
|
||||
|
||||
33 把数组排成最小的数
|
||||
输入一个正整数数组,把所有数字拼起来排出一个最小数
|
||||
|
||||
|
||||
33 把数组排成最小的数。输入一个正整数数组,把所有数字拼起来排出一个最小数
|
||||
|
||||
```
|
||||
int minNumber(int *nums, int length);
|
||||
@@ -216,12 +226,13 @@ int minNumber(int *nums, int length);
|
||||
|
||||
|
||||
37 两个链表的第一个公共节点
|
||||
|
||||
`长的链表先走k步`
|
||||
|
||||
|
||||
|
||||
38 数字在排序数组中出现的次数
|
||||
比如 {1,2,3,3,3,3,4,5}, 数字 3出现了4从
|
||||
38 数字在排序数组中出现的次数。比如 {1,2,3,3,3,3,4,5}, 数字 3出现了4从
|
||||
|
||||
`使用二分查找找第一个3,和最后一个3出现的位置`
|
||||
|
||||
|
||||
@@ -231,6 +242,7 @@ int appearCount(int *nums,int length);
|
||||
|
||||
|
||||
39 二叉树的深度
|
||||
|
||||
`递归`
|
||||
|
||||
|
||||
@@ -238,8 +250,7 @@ int appearCount(int *nums,int length);
|
||||
int treeDepth(BTree *root);
|
||||
```
|
||||
|
||||
40 数组中只出现一次的数字
|
||||
数组中除了2个数字之外,其他的数组都出现了2次,找出这两个数
|
||||
40 数组中只出现一次的数字。数组中除了2个数字之外,其他的数组都出现了2次,找出这两个数
|
||||
|
||||
`异或` `二进制`
|
||||
|
||||
@@ -272,27 +283,21 @@ char *left_rotate_string(char *s,int n)
|
||||
```
|
||||
|
||||
|
||||
43 n个色子的点数
|
||||
|
||||
把n个色子丢地上,朝上一面的点数之和为s。输入n,打印可能的值出现的概率
|
||||
43 n个色子的点数。把n个色子丢地上,朝上一面的点数之和为s。输入n,打印可能的值出现的概率
|
||||
|
||||
|
||||
44 扑克牌中的顺子
|
||||
|
||||
从扑克牌从随机抽5张牌,判断是不是顺子。A是1,J~K是11~13,大小王可以看出任意数字。
|
||||
44 扑克牌中的顺子。从扑克牌从随机抽5张牌,判断是不是顺子。A是1,J~K是11~13,大小王可以看出任意数字。
|
||||
|
||||
|
||||
|
||||
45 圆圈中最后剩下的数字(约瑟夫问题)
|
||||
|
||||
0,1,...,n-1 这n个数字排成一个圆圈,从数字0开始从这个圆圈里面删除第m个数字,求出这个圆圈里最后剩下的数字。
|
||||
45 圆圈中最后剩下的数字(约瑟夫问题)。0,1,...,n-1 这n个数字排成一个圆圈,从数字0开始从这个圆圈里面删除第m个数字,求出这个圆圈里最后剩下的数字。
|
||||
|
||||
|
||||
46 求 1+2+...+n。要求不用乘除法,for/while/if/else/switch等关键字及条件判断语句
|
||||
|
||||
|
||||
|
||||
47 不用加减乘除做加法
|
||||
|
||||
`位运算`
|
||||
|
||||
|
||||
@@ -301,9 +306,10 @@ char *left_rotate_string(char *s,int n)
|
||||
|
||||
49 把字符串转换成整数。比如 "12343567754" -> 12343567754
|
||||
|
||||
``
|
||||
```
|
||||
int strToInt(char str);
|
||||
```
|
||||
|
||||
`NULL,空串,正负号,溢出`
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user