前言
总结了C++核心面试题,一共80道,供大家学习。
下载链接:https://github.com/mco0308/-C-
以下是目录:
# 目录
## 一、链表
1. 反转链表 ..................................................... 1
2. 链表内指定区间反转 ....................................... 2
3. 合并两个排序的链表 ..................................... 3
4. 合并 k 个已排序的链表 ................................. 5
5. 判断链表中是否有环 ..................................... 6
6. 链表中环的入口结点 ..................................... 7
7. 链表中倒数最后 k 个结点 ............................... 9
8. 两个链表的第一个公共结点 ............................ 11
9. 链表相加(二) ............................................... 13
10. 单链表的排序 ................................................ 15
11. 判断一个链表是否为回文结构 ......................... 18
12. 链表的奇偶重排 ............................................ 21
13. 删除有序链表中重复的元素-I ........................ 23
14. 删除有序链表中重复的元素-II ....................... 24
## 二、二分查找/排序
15. 二分查找-I ................................................... 26
16. 寻找峰值 ........................................................ 28
17. 数组中的逆序对 ............................................ 29
18. 旋转数组的最小数字 ..................................... 31
19. 比较版本号 ................................................... 32
## 三、二叉树
20. 二叉树的前序遍历(根左右) .......................... 34
21. 二叉树的中序遍历(左根右) .......................... 36
22. 二叉树的后序遍历(左右根) .......................... 38
23. 二叉树的最大深度 .......................................... 39
24. 二叉搜索树与双向链表 ................................. 40
25. 合并二叉树 .................................................... 44
26. 二叉树的镜像 ................................................. 46
27. 判断是不是二叉搜索树 ................................ 47
28. 判断是不是完全二叉树 ................................ 49
29. 判断是不是平衡二叉树 ................................ 51
30. 二叉搜索树的最近公共祖先 .......................... 52
31. 在二叉树中找到两个节点的最近公共祖先 ......... 54
32. 序列化二叉树 ................................................ 57
33. 重建二叉树 .................................................... 62
34. 输出二叉树的右视图 ...................................... 64
## 四、堆/栈/队列
35. 用两个栈实现队列 ........................................ 67
36. 包含 min 函数的栈 ......................................... 69
37. 有效括号序列 ................................................ 71
38. 滑动窗口的最大值 ........................................ 73
39. 最小的 K 个数 .............................................. 75
40. 寻找第 K 大 .................................................. 77
41. 数据流中的中位数 ........................................ 78
42. 表达式求值 .................................................. 81
## 五、哈希
43. 数组中出现次数超过一半的数字 ...................... 83
44. 数组中只出现一次的两个数字 ........................ 84
45. 缺失的第一个正整数 ..................................... 85
## 六、递归/回溯
46. 没有重复项数字的全排列 ............................... 88
47. 有重复项数字的全排列 ................................. 90
48. 岛屿数量 ....................................................... 92
49. 字符串的排列 ................................................ 95
50. 括号生成 ....................................................... 97
51. 矩阵最长递增路径 ........................................ 99
## 七、动态规划
52. 斐波那契数列 .............................................. 101
53. 跳台阶 .......................................................... 103
54. 最小花费爬楼梯 ........................................... 104
55. 最长公共子序列(二) .................................. 106
56. 最长公共子串 .............................................. 108
57. 不同路径的数目(一) .................................. 110
58. 矩阵的最小路径和 ........................................ 112
59. 把数字翻译成字符串 .................................... 114
60. 兑换零钱(一) ............................................ 116
61. 最长上升子序列(一) .................................. 118
62. 最长回文子串 .............................................. 119
63. 数字字符串转化成 IP 地址 ............................. 121
64. 编辑距离(一) ............................................ 123
65. 打家劫舍(一) ............................................ 125
66. 打家劫舍(二) ............................................ 126
## 八、字符串
67. 字符串变形 .................................................. 127
68. 最长公共前缀 ............................................... 130
69. 验证 IP 地址 ................................................ 132
70. 大数加法 ..................................................... 136
## 九、双指针
71. 判断是否为回文字符串 ................................. 138
72. 合并区间 ..................................................... 140
73. 反转字符串 .................................................. 142
74. 最长无重复子数组 ....................................... 143
75. 盛水最多的容器 ........................................... 146
## 十、贪心算法
76. 主持人调度(二) ........................................ 148
## 十一、模拟
77. 旋转数组 ..................................................... 150
78. 顺时针旋转矩阵 .......................................... 152
79. 设计 LRU 缓存结构(最近最少使用) ............. 155
80. 设计 LFU 缓存结构(最近最不常使用) .......... 157