# 剑指Offer
## 数据结构与算法名企面试题精讲
### 作者:何海涛
---
#### 第1章:[整数](./Chapter01.md)
#### 第2章:[数组](./Chapter02.md)
#### 第3章:[字符串](./Chapter03.md)
#### 第4章:[链表](./Chapter04.md)
#### 第5章:[哈希表](./Chapter05.md)
#### 第6章:[栈](./Chapter06.md)
#### 第7章:[队列](./Chapter07.md)
#### 第8章:[树](./Chapter08.md)
#### 第9章:[堆](./Chapter09.md)
#### 第10章:[前缀树](./Chapter10.md)
#### 第11章:[二分查找](./Chapter11.md)
#### 第12章:[排序](./Chapter12.md)
#### 第13章:[回溯法](./Chapter13.md)
#### 第14章:[动态规划](./Chapter14.md)
#### 第15章:[图](./Chapter15.md)
---
## 购买网址
+ 京东网:https://item.jd.com/13371972.html
+ 当当网:http://product.dangdang.com/29280950.html
---
## 勘误
### 第一版
#### 第1章 整数
+ 第2页,面试题1的分析的第1段的第2行:求(2^31-1)/1,减1的操作将执行2^32-1次。应该改为:求(2^31-1)/1,减1的操作将执行2^31-1次。
#### 第2章 数组
+ 第19页,面试题8的分析的第4段的第5-6行:再把指针P2向右移动一步指向数字6。应该改为:再把指针P2向右移动一步指向数字4。
+ 第23页,面试题10的分析的第5段的最后一句话:那么数组中从第i+1个数字开始到第j个数字结束的子数组之和为k。应该改为:那么数组中从第j+1个数字开始到第i个数字结束的子数组之和为k。
+ 第27页,面试题13的图2.2下面的第二段的“该子矩阵的数字之和等于sums[r2][c2]+sums[r1-1][c2]-sums[r2][c1-1]+sums[r1-1][c1-1]”,应改为“该子矩阵的数字之和等于sums[r2][c2]-sums[r1-1][c2]-sums[r2][c1-1]+sums[r1-1][c1-1]”。
#### 第4章 链表
+ 第51页,面试题21的代码中的参数n改为k,即
``` java
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode front = head, back = dummy;
for (int i = 0; i < n; i++) {
front = front.next;
}
while (front != null) {
front = front.next;
back = back.next;
}
back.next = back.next.next;
return dummy.next;
}
```
应该改为:
``` java
public ListNode removeNthFromEnd(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode front = head, back = dummy;
for (int i = 0; i < k; i++) {
front = front.next;
}
while (front != null) {
front = front.next;
back = back.next;
}
back.next = back.next.next;
return dummy.next;
}
```
#### 第6章 栈
+ 第104页,第3行:宽是1(5-1-1=3)。应该改为:宽是3(5-1-1=3)。
#### 第7章 队列
+ 第112页,面试题42的题目描述
``` java
class RecentAverage {
public RecentCounter();
public int ping(int t);
}
```
应该改为:
``` java
class RecentCounter {
public RecentCounter();
public int ping(int t);
}
```
#### 第8章 树
+ 第156页,面试题57“值和下标之差都在给定的范围内”的第二种解法“时间复杂度为O(n)“的分析的第二段的第三、四行”则再判断编号为id-1和id-2的这两个相邻的桶中是否存在...“,应该改为:则再判断编号为id-1和id+1的这两个相邻的桶中是否存在...
#### 第14章 动态规划
+ 第245页,面试题88“使用缓存的递归代码”参考代码中的minCostClimbingStairs函数
``` java
public int minCostClimbingStairs(int[] cost) {
int len = cost.length;
int[] dp = new int[len];
helper(cost, len - 1, dp);
return Math.min(dp[len - 2], dp[len - 1]);
}
```
应该改为:
``` java
public int minCostClimbingStairs(int[] cost) {
int len = cost.length;
int[] dp = new int[len];
dp[0] = cost[0];
helper(cost, len - 1, dp);
return Math.min(dp[len - 2], dp[len - 1]);
}
```
增加了一行代码初始化dp[0]。
+ 第249页,面试题89的"分析确定状态转移方程"的第4段的第3行:因此f(1)=nums[0]。应该改为:因此f(0)=nums[0]。
+ 第256页,第2段的第二行“当i等于时”,应改为“当i等于0时”。
+ 第300页,面试题103的"分析确定状态转移方程"的第4行:再加上1枚标号为i-1的硬币。应该改为:再加上0枚标号为i-1的硬币。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
数据结构是计算机存储、组织数据的方式,它涉及到数据的逻辑结构、物理结构以及对数据的基本操作。数据结构的选择会影响到程序的效率、可读性和可维护性。常见的数据结构有数组、链表、栈、队列、树、图等。 算法则是解决特定问题的步骤,是对数据运算和操作的详细描述。算法的设计和选择会直接影响到程序的效率,因此,在设计和选择算法时,需要考虑到时间复杂度、空间复杂度等因素。 在实际应用中,数据结构和算法常常是密不可分的。通过对数据结构的理解和运用,以及对算法的学习和研究,可以帮助我们更有效地解决实际问题,提升编程能力。
资源推荐
资源详情
资源评论
收起资源包目录
《剑指Offer:数据结构与算法名企面试题精讲》.zip (59个子文件)
hjhjkhjhjhjhjhljomjmujhyhfcxgfdcghfjhgjkhgkhgkjgkhbmxras1
Figures
0602.png 7KB
0805.png 7KB
1403.png 12KB
1204.png 9KB
0410.png 8KB
0804.png 6KB
1505.png 17KB
0603.png 5KB
0809.png 7KB
0811.png 3KB
0403.png 5KB
0806.png 7KB
0802.png 12KB
1205.png 13KB
1515.png 3KB
0706.png 5KB
1409.png 6KB
0808.png 15KB
0810.png 17KB
0201.png 10KB
0408.png 8KB
0703.png 32KB
0405.png 7KB
0401.png 9KB
1407.png 3KB
0704.png 6KB
0414.png 17KB
0413.png 4KB
1512.png 5KB
1401.png 8KB
0606.png 6KB
1507.png 12KB
0415.png 8KB
1404.png 11KB
0412.png 10KB
1508.png 8KB
1408.png 3KB
0812.png 7KB
1522.png 6KB
1406.png 11KB
1405.png 15KB
0705.png 7KB
Chapter06.md 7KB
.gitattributes 66B
Chapter04.md 11KB
Chapter15.md 32KB
Chapter14.md 26KB
Chapter02.md 7KB
Chapter08.md 16KB
Chapter03.md 8KB
Chapter12.md 6KB
Chapter13.md 9KB
Chapter10.md 11KB
Chapter05.md 9KB
Chapter09.md 4KB
Chapter11.md 6KB
Chapter07.md 8KB
README.md 4KB
Chapter01.md 5KB
共 59 条
- 1
资源评论
极致人生-010
- 粉丝: 4379
- 资源: 3086
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功