目录 第1章算法入门——概论/1 11单项选择题及其参考答案/2 1.1.1单项选择题/2 1.1.2单项选择题参考答案/3 12问答题及其参考答案/4 1.2.1问答题/4 1.2.2问答题参考答案/5 13算法设计题及其参考答案/8 1.3.1算法设计题/8 1.3.2算法设计题参考答案/8 第2章工之利器——常用数据结构及其应用/10 21单项选择题及其参考答案/11 2.1.1单项选择题/11 2.1.2单项选择题参考答案/12 22问答题及其参考答案/13 2.2.1问答题/13 2.2.2问答题参考答案/15 23算法设计题及其参考答案/16 2.3.1算法设计题/16 2.3.2算法设计题参考答案/17 24在线编程题及其参考答案/24 2.4.1LeetCode26——删除排序数组中的重复项★/24 2.4.2LeetCode1480——一维数组的动态和★/26 2.4.3LeetCode560——和为k的子数组★★/27 2.4.4LeetCode328——奇偶链表★★/28 2.4.5LeetCode23——合并k个升序链表★★★/29 2.4.6LeetCode32——最长有效括号★★★/30 2.4.7LeetCode678——有效的括号字符串★★/31 2.4.8LeetCode1823——找出游戏的获胜者★★/32 2.4.9LeetCode215——数组中的第k个最大元素★★/32 2.4.10LeetCode692——前k个高频单词★★/35 第3章必备技能——基本算法设计方法/37 31单项选择题及其参考答案/38 3.1.1单项选择题/38 3.1.2单项选择题参考答案/39 32问答题及其参考答案/40 3.2.1问答题/40 3.2.2问答题参考答案/42 33算法设计题及其参考答案/45 3.3.1算法设计题/45 3.3.2算法设计题参考答案/46 34在线编程题及其参考答案/56 3.4.1LeetCode647——回文子串★★/56 3.4.2LeetCode344——反转字符串★/58 3.4.3LeetCode118——杨辉三角★/59 3.4.4LeetCode21——合并两个有序链表★/60 3.4.5LeetCode206——反转链表★/61 3.4.6LeetCode24——两两交换链表中的结点★★/62 3.4.7LeetCode89——格雷编码★★/64 3.4.8LeetCode50——pow(x,n)★★/65 3.4.9LeetCode101——对称二叉树★/65 3.4.10LeetCode655——输出二叉树★★/66 3.4.11LeetCode95——不同的二叉排序树Ⅱ★★/67 3.4.12LeetCode22——括号的生成★★/69第4章分而治之——分治法/71 41单项选择题及其参考答案/72 4.1.1单项选择题/72 4.1.2单项选择题参考答案/73 42问答题及其参考答案/74 4.2.1问答题/74 4.2.2问答题参考答案/75 43算法设计题及其参考答案/76 4.3.1算法设计题/76 4.3.2算法设计题参考答案/77 44在线编程题及其参考答案/88 4.4.1LeetCode240——搜索二维矩阵Ⅱ★★/88 4.4.2LeetCode35——搜索插入位置★/89 4.4.3LeetCode74——搜索二维矩阵★★/90 4.4.4LeetCode374——猜数字大小★/91 4.4.5LeetCode1011——在d天内送达包裹的能力★★/91 4.4.6LeetCode33——搜索旋转排序数组★★/93 4.4.7LeetCode367——有效的完全平方数★/95 4.4.8LeetCode215——数组中的第k个最大元素★★/96 4.4.9LeetCode654——最大二叉树★★/99 4.4.10LeetCode4——寻找两个正序数组的中位数★★★/100 4.4.11LeetCode23——合并k个升序链表★★★/102 4.4.12LeetCode315——计算右侧小于当前元素的元素个数★★★/103 第5章走不下去就回退——回溯法/105 51单项选择题及其参考答案/106 5.1.1单项选择题/106 5.1.2单项选择题参考答案/107 52问答题及其参考答案/107 5.2.1问答题/107 5.2.2问答题参考答案/109 53算法设计题及其参考答案/112 5.3.1算法设计题/112 5.3.2算法设计题参考答案/113 54在线编程题及其参考答案/127 5.4.1LeetCode785——判断二分图★★/127 5.4.2LeetCode216——组合总和Ⅲ★★/128 5.4.3LeetCode77——组合★★/131 5.4.4LeetCode40——组合总和Ⅱ★★/132 5.4.5LeetCode39——组合总和★★/133 5.4.6LeetCode79——单词的搜索★★/134 5.4.7LeetCode17——电话号码的字母组合★★/136 5.4.8LeetCode131——分割回文串★★/138 5.4.9LeetCode93——复原IP地址★★/139 5.4.10LeetCode46——全排列★★/140 5.4.11LeetCode51——n皇后★★★/141 5.4.12LeetCode22——括号的生成★★/142 5.4.13LeetCode638——大礼包★★★/143 第6章朝最优解方向前进——分支限界法/146 61单项选择题及其参考答案/147 6.1.1单项选择题/147 6.1.2单项选择题参考答案/148 62问答题及其参考答案/149 6.2.1问答题/149 6.2.2问答题参考答案/149 63算法设计题及其参考答案/152 6.3.1算法设计题/152 6.3.2算法设计题参考答案/153 64在线编程题及其参考答案/172 6.4.1LeetCode785——判断二分图★★/172 6.4.2LeetCode397——整数的替换★★/173 6.4.3LeetCode934——最短的桥★★/174 6.4.4LeetCode847——访问所有结点的最短路径★★★/176 6.4.5LeetCode1376——通知所有员工所需的时间★★/177 6.4.6LeetCode1293——网格中的最短路径★★★/178 6.4.7LeetCode127——单词接龙★★★/180 6.4.8LeetCode279——完全平方数★★/182 6.4.9LeetCode22——括号的生成★★/183 6.4.10LeetCode815——公交路线★★★/184 6.4.11LeetCode638——大礼包★★★/185 第7章每一步都局部最优——贪心法/188 71单项选择题及其参考答案/189 7.1.1单项选择题/189 7.1.2单项选择题参考答案/190 72问答题及其参考答案/191 7.2.1问答题/191 7.2.2问答题参考答案/191 73算法设计题及其参考答案/193 7.3.1算法设计题/193 7.3.2算法设计题参考答案/194 74在线编程题及其参考答案/201 7.4.1LeetCode121——买卖股票的最佳时机★/201 7.4.2LeetCode122——买卖股票的最佳时机Ⅱ★★/202 7.4.3LeetCode670——最大交换★★/203 7.4.4LeetCode316——去除重复字母★★/204 7.4.5LeetCode135——分发糖果★★★/205 7.4.6LeetCode56——合并区间★★/206 7.4.7LeetCode502——IPO★★★/207 7.4.8LeetCode402——移掉k位数字★★/208 7.4.9LeetCode452——用最少数量的箭引爆气球★★/209 7.4.10LeetCode1353——最多可以参加的会议数目★★/210 7.4.11LeetCode300——最长递增子序列★★/211 7.4.12LeetCode1334——阈值距离内邻居最少的城市★★/213 第8章保存子问题的解——动态规划/215 81单项选择题及其参考答案/216 8.1.1单项选择题/216 8.1.2单项选择题参考答案/217 82问答题及其参考答案/218 8.2.1问答题/218 8.2.2问答题参考答案/219 83算法设计题及其参考答案/222 8.3.1算法设计题/222 8.3.2算法设计题参考答案/223 84在线编程题及其参考答案/232 8.4.1LeetCode152——乘积最大的子数组★★/232 8.4.2LeetCode64——最小路径和★★/233 8.4.3LeetCode1289——下降路径的最小和Ⅱ★★★/234 8.4.4LeetCode1301——最大得分的路径数目★★★/235 8.4.5LeetCode139——单词的拆分★★/237 8.4.6LeetCode377——组合总和Ⅳ★★/238 8.4.7LeetCode300——最长递增子序列★★/239 8.4.8LeetCode354——俄罗斯套娃信封问题★★★/240 8.4.9LeetCode72——编辑距离★★★/241 8.4.10LeetCode583——两个字符串的删除操作★★/242 8.4.11LeetCode1143——最长公共子序列★★/243 8.4.12LeetCode91——解码方法★★/244 8.4.13LeetCode55——跳跃游戏★★/245 8.4.14LeetCode122——买卖股票的最佳时机Ⅱ/246 8.4.15LeetCode956——最高的广告牌★★★/247 8.4.16LeetCode416——分割等和子集★★/248 8.4.17LeetCode518——零钱兑换Ⅱ★★/250 8.4.18LeetCode1312——让字符串成为回文串的最少 操作次数★★★/251 第9章最难问题——NP完全问题/253 91单项选择题及其参考答案/254 9.1.1单项选择题/254 9.1.2单项选择题参考答案/254 92问答题及其参考答案/255 9.2.1问答题/255 9.2.2问答题参考答案/255 附录/257 附录A在线编程实验报告格式/258 附录B在线编程实验报告示例/258