leetcode LeetCode Problems' Solutions 题目后面的*表示不会做的题目。括号内表示需要 题目 题解 001-两数之和 C++ 002-两数相加 C++ 003-无重复字符的最长子串* C++ 004-寻找两个有序数组的中位数** C++ 005-最长回文子串** C++ 006-Z字形变换* C++ 007-整数反转* C++ 008-字符串转换整数 (atoi) C++ 009-回文数* C++ 010-正则表达式匹配**(TODO 有限状态机) C++ 011-盛最多水的容器 C++ 012-整数转罗马数字* C++ 013-罗马数字转整数 C++ 014-最长公共前缀*(TODO:字典树) C++ 015-三数之和** C++ 016-最接近的三数之和** C++ 017-电话号码的字母组合* C++ 018-四数之和 C++ 019-删除链表的倒数第N个节点 C++ 020-有效的括号 C++ 021-合并两个有序链表 C++ 022-括号生成**(没思路) C++ 023-合并K个排序链表** C++ 024-两两交换链表中的节点 C++ 025-K个一组翻转链表** C++ 026-删除排序数组中的重复项 C++ 027-移除元素 C++ 028-实现strStr()*(TODO:KMP) C++ 029-两数相除*(不懂) C++ 030-串联所有单词的子串* C++ 031-下一个排列** C++ 032-最长有效括号** C++ 033-搜索旋转排序数组** C++ 034-在排序数组中查找元素的第一个和最后一个位置 C++ 035-搜索插入位置 C++ 036-有效的数独* C++ 037-解数独* C++ 038-报数 C++ 039-组合总和 C++ 040-组合总和 II* C++ 041-缺失的第一个正数** C++ 042-接雨水** C++ 043-字符串相乘* C++ 044-通配符匹配*(不懂) C++ 045-跳跃游戏 II* C++ 046-全排列*(用尽可能多的方法) C++ 047-全排列 II* C++ 048-旋转图像* C++ 049-字母异位词分组* C++ 050-Pow(x, n)* C++ 051-N皇后* C++ 052-N皇后 II* C++ 053-最大子序和 C++ 054-螺旋矩阵 C++ 055-跳跃游戏* C++ 056-合并区间* C++ 057-插入区间 C++ 058-最后一个单词的长度 C++ 059-螺旋矩阵 II C++ 060-第k个排列 C++ 061-旋转链表 C++ 062-不同路径* C++ 063-不同路径 II* C++ 064-最小路径和**(最短路径算法) C++ 065-有效数字*(不懂) C++ 066-加一 C++ 067-二进制求和* C++ 068-文本左右对齐*(不懂) C++ 069-x的平方根**(牛顿迭代法) C++ 070-爬楼梯 C++ 071-简化路径** C++ 072-编辑距离** C++ 073-矩阵置零 C++ 074-搜索二维矩阵* C++ 075-颜色分类** C++ 076-最小覆盖子串* C++ 077-组合* C++ 078-子集**(迭代、位运算) C++ 079-单词搜索 C++ 080-删除排序数组中的重复项 II C++ 081-搜索旋转排序数组 II** C++ 082-删除排序链表中的重复元素 II C++ 083-删除排序链表中的重复元素 C++ 084-柱状图中最大的矩形* C++ 085-最大矩形** C++ 086-分隔链表 C++ 088-合并两个有序数组 C++ 089-格雷编码* C++ 090-子集 II C++ 091-解码方法** C++ 092-反转链表 II C++ 093-复原IP地址** C++ 094-二叉树的中序遍历 C++ 095不同的二叉搜索树 II** C++ 096-不同的二叉搜索树** C++ 098-验证二叉搜索树 C++ 100-相同的树 C++ 101-对称二叉树*(迭代) C++ 102-二叉树的层次遍历 C++ 103-二叉树的锯齿形层次遍历 C++ 104-二叉树的最大深度 C++ 105-从前序与中序遍历序列构造二叉树 C++ 106-从中序与后序遍历序列构造二叉树 C++ 107-二叉树的层次遍历 II C++ 108-将有序数组转换为二叉搜索树 C++ 109-有序链表转换二叉搜索树 C++ 110-平衡二叉树 C++ 111-二叉树的最小深度 C++ 112-路径总和 C++ 113-路径总和 II C++ 114-二叉树展开为链表*(非递归实现) C++ 115-不同的子序列*(不懂) C++ 116-填充每个节点的下一个右侧节点指针* C++ 117-填充每个节点的下一个右侧节点指针 II* C++ 118-杨辉三角 C++ 119-杨辉三角 II C++ 120-三角形最小路径和** C++ 121-买卖股票的最佳时机**(动态规划) C++ 122-买卖股票的最佳时机 II*(贪心算法) C++ 123-买卖股票的最佳时机 III* C++ 124-二叉树中的最大路径和** C++ 125-验证回文串 C++ 127-单词接龙* C++ 128-最长连续序列** C++ 129-求根到叶子节点数字之和* C++ 130-被围绕的区域* C++ 131-分割回文串*(动态规划) C++ 132-分割回文串 II C++ 133-克隆图* C++ 134-加油站* C++ 135-分发糖果* C++ 136-只出现一次的数字** C++ 137-只出现一次的数字 II**(TODO 位运算) C++ 138-复制带随机指针的链表*(不熟悉深拷贝,与 133-克隆图 类似) C++ 139-单词拆分* C++ 140-单词拆分 II* C++ 141-环形链表 C++ 142-环形链表 II** C++ 143-重排链表* C++ 144-二叉树的前序遍历 C++ 145-二叉树的后序遍历* C++ 146-LRU缓存机制 C++ 147-对链表进行插入排序 C++ 148-排序链表 C++ 149-直线上最多的点数* C++ 150-逆波兰表达式求值 C++ 151-翻转字符串里的单词 C++ 152-乘积最大子序列** C++ 153-寻找旋转排序数组中的最小值** C++ 154-寻找旋转排序数组中的最小值 II** C++ 155-最小栈 C++ 160-相交链表*(栈、哈希表、其他) C++ 162-寻找峰值*(简单的实现) C++ 164-最大间距* C++ 165-比较版本号* C++ 166-分数到小数*(不懂) C++ 167-两数之和 II - 输入有序数组 C++ 168-Excel表列名称* C++ 169-求众数 C++ 171-Excel表列序号 C++ 172-阶乘后的零** C++ 173-二叉搜索树迭代器 C++ 174-地下城游戏** C++ 179-最大数* C++ 187-重复的DNA序列** C++ 188-买卖股票的最佳时机 IV** C++ 189-旋转数组** C++ 190-颠倒二进制位** C++ 191-位1的个数 C++ 198-打家劫舍* C++ 199-二叉树的右视图 C++ 200-岛屿数量 C++ 201-数字范围按位与* C++ 202-快乐数 C++ 203-移除链表元素* C++ 204-计数质数* C++ 205-同构字符串* C++ 206-反转链表* C++ 207-课程表* C++ 208-实现 Trie (前缀树)* C++ 209-长度最小的子数组** C++ 210-课程表 II* C++ 220-存在重复元素 III* C++ 211-添加与搜索单词 - 数据结构设计 C++ 213-打家劫舍 II* C++ 215-数组中的第K个最大元素** C++ 216-组合总和 III* C++ 217-存在重复元素 C++ 219-存在重复元素 II C++ 221-最大正方形** C++ 222-完全二叉树的节点个数* C++ 223-矩形面积* C++ 224-基本计算器* C++ 225-用队列实现栈* C++ 226-翻转二叉树 C++ 227-基本计算器 II* C++ 228-汇总区间 C++ 229-求众数 II* C++ 230-二叉搜索树中第K小的元素** C++ 231-2的幂** C++ 232-用栈实现队列 C++ 234-回文链表* C++ 235-二叉搜索树的最近公共祖先 C++ 236-二叉树的最近公共祖先** C++ 237-删除链表中的节点* C++ 238-除自身以外数组的乘积* C++ 239-滑动窗口最大值* C++ 240-搜索二维矩阵 II* C++ 241-为运算表达式设计优先级*(TODO:动态规划) C++ 242-有效的字母异位词* C++ 258-各位相加* C++ 260-只出现一次的数字 III* C++ 263-丑数 C++ 264-丑数 II* C++ 268-缺失数字** C++ 274-H指数* C++ 275-H指数 II* C++ 278-第一个错误的版本 C++ 279-完全平方数**(不会做) C++ 284-顶端迭代器* C++ 283-移动零* C++ 287-寻找重复数* C++ 290-单词规律* C++ 292-Nim 游戏* C++ 297-二叉树的序列化与反序列化* C++ 299-猜数字游戏* C++ 300-最长上升子序列** C++ 303-区域和检索 - 数组不可变* C++ 309-最佳买卖股票时机含冷冻期** C++ 315-计算右侧小于当前元素的个数* C++ 322-零钱兑换* C++ 326-3的幂*(TODO 3进制) C++ 328-奇偶链表 C++ 337-打家劫舍 III* C++ 338-比特位计数*** C++ 342-4的幂** C++ 343-整数拆分* C++ 344-反转字符串 C++ 345-反转字符串中的元音字母 C++ 347-前K个高频元素* C++ 349-两个数组的交集* C++ 350-两个数组的交集 II* C++ 354-俄罗斯套娃信封问题* C++ 367-有效的完全平方数* C++ 371-两整数之和* C++ 374-猜数字大小* C++ 376-摆动序列* C++ 387-字符串中的第一个唯一字符* C++ 392-判断子序列* C++ 394-字符串解码* C++ 402-移掉K位数字* C++ 406-根据身高重建队列* C++ 410-分割数组的最大值* C++ 416-分割等和子集* C++ 432-全O(1)的数据结构 C++ 437-路径总和 III*(递归形式) C++ 438-找到字符串中所有字母异位词* C++ 442-数组中重复的数据 C++ 445-两数相加 II* C++ 448-找到所有数组中消失的数字** C++ 460-LFU缓存* C++ 461-汉明距离 C++ 494-目标和* C++ 496-下一个更大元素 I C++ 503-下一个更大元素 II C++ 538-把二叉搜索树转换为累加树* C++ 541-反转字符串 II C++ 543-二叉树的直径* C++ 547-朋友圈* C++ 557-反转字符串中的单词 III C++ 556-下一个更大元素 III C++ 567-字符串的排列** C++ 581-最短无序连续子数组* C++ 617-合并二叉树 C++ 621-任务调度器*(TODO 其他更巧妙的方法) C++ 647-回文子串* C++ 674-最长连续递增序列 C++ 695-岛屿的最大面积 C++ 739-每日温度* C++ 714-买卖股票的最佳时机含手续费* C++ 764-使用最小花费爬楼梯* C++ 852-山脉数组的峰顶索引 C++ 860-柠檬水找零 C++ 876-链表的中间结点 C++ 912-排序数组* C++ 946-验证栈序列 C++ 1114-按序打印* C++ 1115-交替打印FooBar* C++ 1116-打印零与奇偶数* C++ 1143-最长公共子序列* C++ 1226-哲学家进餐 C++