第1章栈和队列 1
设计一个有getMin功能的栈(士★☆☆☆) 1
由两个栈组成的队列(尉★★☆☆) 5
如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8
猫狗队列(士★☆☆☆)10
用一个栈实现另一个栈的排序(士★☆☆☆) 13
用栈来求解汉诺塔问题(校★★★☆) 14
生成窗口最大值数组(尉★★☆☆) 19
构造数组的MaxTree(校★★★☆) 22
求最大子矩阵的大小(校★★★☆) 26
最大值减去最小值小于或等于num的子数组数量(校★★★☆) 31
第2章链表问题34
打印两个有序链表的公共部分(士★☆☆☆) 34
在单链表和双链表中删除倒数第K 个节点(士★☆☆☆) 35
删除链表的中间节点和a/b 处的节点(士★☆☆☆) 38
反转单向和双向链表(士★☆☆☆) 40
反转部分单向链表(士★☆☆☆) 42
环形单链表的约瑟夫问题(原问题:士★☆☆☆进阶:校★★★☆)43
判断一个链表是否为回文结构(普通解法士★☆☆☆)(进阶解法尉★★☆☆) 48
将单向链表按某值划分成左边小、中间相等、右边大的形式(尉★★☆☆) 52
设计一个有getMin功能的栈(士★☆☆☆) 1
由两个栈组成的队列(尉★★☆☆) 5
如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8
猫狗队列(士★☆☆☆)10
用一个栈实现另一个栈的排序(士★☆☆☆) 13
用栈来求解汉诺塔问题(校★★★☆) 14
生成窗口最大值数组(尉★★☆☆) 19
构造数组的MaxTree(校★★★☆) 22
求最大子矩阵的大小(校★★★☆) 26
最大值减去最小值小于或等于num的子数组数量(校★★★☆) 31
第2章链表问题34
打印两个有序链表的公共部分(士★☆☆☆) 34
在单链表和双链表中删除倒数第K 个节点(士★☆☆☆) 35
删除链表的中间节点和a/b 处的节点(士★☆☆☆) 38
反转单向和双向链表(士★☆☆☆) 40
反转部分单向链表(士★☆☆☆) 42
环形单链表的约瑟夫问题(原问题:士★☆☆☆进阶:校★★★☆)43
判断一个链表是否为回文结构(普通解法士★☆☆☆)(进阶解法尉★★☆☆) 48
将单向链表按某值划分成左边小、中间相等、右边大的形式(尉★★☆☆) 52
找到无序数组中最小的k 个数(O(Nlogk)的方法尉★★☆☆)(O(N)的方法将★★★★) 336
需要排序的最短子数组长度(士★☆☆☆) 342
在数组中找到出现次数大于N/K 的数(校★★★☆)343
在行列都排好序的矩阵中找数(士★☆☆☆) 347
最长的可整合子数组的长度(尉★★☆☆) 349
不重复打印排序数组中相加和为给定值的所有二元组和三元组(尉★★☆☆) 351
未排序正数数组中累加和为给定值的最长子数组长度(尉★★☆☆)354
未排序数组中累加和为给定值的最长子数组系列问题(尉★★☆☆)355
未排序数组中累加和小于或等于给定值的最长子数组长度(校★★★☆) 358
计算数组的小和(校★★★☆) 361
自然数数组的排序(士★☆☆☆) 364
奇数下标都是奇数或者偶数下标都是偶数(士★☆☆☆)366
子数组的最大累加和问题(士★☆☆☆) 367
子矩阵的最大累加和问题(尉★★☆☆) 368
在数组中找到一个局部最小的位置(尉★★☆☆) 371
数组中子数组的最大累乘积(尉★★☆☆) 373
打印N 个数组整体最大的Top K(尉★★☆☆) 374
边界都是1 的最大正方形大小(尉★★☆☆) 377
不包含本位置值的累乘数组(士★☆☆☆) 380
数组的partition 调整(士★☆☆☆) 382
求最短通路值(尉★★☆☆) 384
数组中未出现的最小正整数(尉★★☆☆) 386
数组排序之后相邻数的最大差值(尉★★☆☆) 388
第9章其他题目390
从5 随机到7 随机及其扩展(原问题尉★★☆☆补充问题尉★★☆☆)(进阶问题校★★★☆)390
一行代码求两个数的最大公约数(士★★☆☆) 394
有关阶乘的两个问题(原问题尉★★☆☆进阶问题校★★★☆)395
判断一个点是否在矩形内部(尉★★☆☆) 398
判断一个点是否在三角形内部(尉★★☆☆) 399
折纸问题(尉★★☆☆)402
蓄水池算法(尉★★☆☆) 404
设计有setAll功能的哈希表(士★☆☆☆) 406
最大的leftMax与rightMax之差的绝对值(校★★★☆)408
设计可以变更的缓存结构(尉★★☆☆) 410
设计RandomPool结构(尉★★☆☆) 414
调整[0,x)区间上的数出现的概率(士★☆☆☆) 416
路径数组变为统计数组(校★★★☆) 417
正数数组的最小不可组成和(尉★★☆☆) 422
一种字符串和数字的对应关系(校★★★☆) 426
1 到n 中1 出现的次数(校★★★☆) 429
从N 个数中等概率打印M 个数(士★☆☆☆) 431
判断一个数是否是回文数(士★☆☆☆) 433
在有序旋转数组中找到最小值(尉★★☆☆) 434
在有序旋转数组中找到一个数(尉★★☆☆) 436
数字的英文表达和中文表达(校★★★☆) 439
分糖果问题(校★★★☆) 444
一种消息接收并打印的结构设计(尉★★☆☆) 448
设计一个没有扩容负担的堆结构(将★★★★) 451
随时找到数据流的中位数(将★★★★) 462
在两个长度相等的排序数组中找到上中位数(尉★★☆☆) 465
在两个排序数组中找到第K 小的数(将★★★★) 468
两个有序数组间相加和的TOP K 问题(尉★★☆☆)471
出现次数的TOP K 问题(原问题尉★★☆☆进阶问题校★★★☆) 474
Manacher算法(将★★★★) 483
KMP 算法(将★★★★) 491
丢棋子问题(校★★★☆) 498
画匠问题(校★★★☆)505
邮局选址问题(校★★★☆) 509
需要排序的最短子数组长度(士★☆☆☆) 342
在数组中找到出现次数大于N/K 的数(校★★★☆)343
在行列都排好序的矩阵中找数(士★☆☆☆) 347
最长的可整合子数组的长度(尉★★☆☆) 349
不重复打印排序数组中相加和为给定值的所有二元组和三元组(尉★★☆☆) 351
未排序正数数组中累加和为给定值的最长子数组长度(尉★★☆☆)354
未排序数组中累加和为给定值的最长子数组系列问题(尉★★☆☆)355
未排序数组中累加和小于或等于给定值的最长子数组长度(校★★★☆) 358
计算数组的小和(校★★★☆) 361
自然数数组的排序(士★☆☆☆) 364
奇数下标都是奇数或者偶数下标都是偶数(士★☆☆☆)366
子数组的最大累加和问题(士★☆☆☆) 367
子矩阵的最大累加和问题(尉★★☆☆) 368
在数组中找到一个局部最小的位置(尉★★☆☆) 371
数组中子数组的最大累乘积(尉★★☆☆) 373
打印N 个数组整体最大的Top K(尉★★☆☆) 374
边界都是1 的最大正方形大小(尉★★☆☆) 377
不包含本位置值的累乘数组(士★☆☆☆) 380
数组的partition 调整(士★☆☆☆) 382
求最短通路值(尉★★☆☆) 384
数组中未出现的最小正整数(尉★★☆☆) 386
数组排序之后相邻数的最大差值(尉★★☆☆) 388
第9章其他题目390
从5 随机到7 随机及其扩展(原问题尉★★☆☆补充问题尉★★☆☆)(进阶问题校★★★☆)390
一行代码求两个数的最大公约数(士★★☆☆) 394
有关阶乘的两个问题(原问题尉★★☆☆进阶问题校★★★☆)395
判断一个点是否在矩形内部(尉★★☆☆) 398
判断一个点是否在三角形内部(尉★★☆☆) 399
折纸问题(尉★★☆☆)402
蓄水池算法(尉★★☆☆) 404
设计有setAll功能的哈希表(士★☆☆☆) 406
最大的leftMax与rightMax之差的绝对值(校★★★☆)408
设计可以变更的缓存结构(尉★★☆☆) 410
设计RandomPool结构(尉★★☆☆) 414
调整[0,x)区间上的数出现的概率(士★☆☆☆) 416
路径数组变为统计数组(校★★★☆) 417
正数数组的最小不可组成和(尉★★☆☆) 422
一种字符串和数字的对应关系(校★★★☆) 426
1 到n 中1 出现的次数(校★★★☆) 429
从N 个数中等概率打印M 个数(士★☆☆☆) 431
判断一个数是否是回文数(士★☆☆☆) 433
在有序旋转数组中找到最小值(尉★★☆☆) 434
在有序旋转数组中找到一个数(尉★★☆☆) 436
数字的英文表达和中文表达(校★★★☆) 439
分糖果问题(校★★★☆) 444
一种消息接收并打印的结构设计(尉★★☆☆) 448
设计一个没有扩容负担的堆结构(将★★★★) 451
随时找到数据流的中位数(将★★★★) 462
在两个长度相等的排序数组中找到上中位数(尉★★☆☆) 465
在两个排序数组中找到第K 小的数(将★★★★) 468
两个有序数组间相加和的TOP K 问题(尉★★☆☆)471
出现次数的TOP K 问题(原问题尉★★☆☆进阶问题校★★★☆) 474
Manacher算法(将★★★★) 483
KMP 算法(将★★★★) 491
丢棋子问题(校★★★☆) 498
画匠问题(校★★★☆)505
邮局选址问题(校★★★☆) 509