/LeetCode101

《LeetCode 101》例题及练习题

Primary LanguageC++

LeetCode 101 :和你一起轻松刷题

第 2 章 最易懂的贪心算法

例题
  • 455 分发饼干
  • 135 分发糖果
  • 435 无重叠区间
练习
  • 605 种花问题
  • 452 用最少的数量引爆气球
  • 763 划分字母区间
  • 122 买股票的最佳时机2
  • 406 根据身高重建队列
  • 665 非递减数列

总结:分配问题、区间问题

 

第 3 章 玩转双指针

例题
  • 167 两数之和 2
  • 88 合并两个有序数组
  • 142 环形链表 2
  • 76 最小覆盖字串
练习
  • 633 平方数之和
  • 680 验证回文字符串
  • 524 通过删除字母匹配到字典里最长单词

总结:Two Sum、归并两个有序数组、快慢指针、滑动窗口

 

第 4 章 居合斩!二分查找

例题
  • 69 x 的平方根
  • 34 在排序数组中查找元素的第一个和最后一个位置
  • 81 搜索旋转排序数组2
练习
  • 154 寻找旋转排序数组中的最小值
  • 540 有序数组中的单一元素
  • 4 寻找两个有序数组的中位数

总结:求开方(牛顿迭代法)、查找区间、旋转数组查找数字

 

第 5 章 千奇百怪的排序算法

例题
  • 215 数组中的第K个最大元素
  • 347 前K个高频元素
练习
  • 451 根据字符出现的频率排序
  • 75 颜色分类(经典荷兰国旗问题)

总结:常用排序算法、快速排序、选择排序、桶排序

 

第 6 章 一切皆可搜索

例题
  • 695 岛屿的最大面积
  • 547 省份数量
  • 417 太平洋大西洋水流问题
  • 46 全排列
  • 77 全组合
  • 79 单词搜索
  • 51 N-皇后问题
  • 934 最短的桥
  • 126 单词接龙2
练习
  • 130 被环绕的区域
  • 257 二叉树的所有路径
  • 47 全排列2
  • 40 全组合2
  • 37 解数独 (不会玩儿数独 ~ 下次一定!)
  • 310 最小高度树

总结:深度优先搜索、回溯法、广度优先搜索

 

第 7 章 深入浅出动态规划

基本动态规划:一维
  • 70 爬楼梯
  • 198 打家劫舍
  • 413 等差数列划分
基本动态规划:二维
  • 64 最小路径和
  • 542 01矩阵
  • 221 最大正方形
分割类型题
  • 279 完全平方数
  • 91 解码方法
  • 139 单词拆分
子序列问题
  • 300 最长递增子序列
  • 1143 最长公共子序列
背包问题
  • 416 分割等和子集
  • 474 零和一
  • 322 零钱兑换
字符串编辑
  • 72 编辑距离
  • 650 只有两个键的键盘
  • 10 正则表达式匹配
股票交易
  • 121 买卖股票的最佳时机
  • 188 买卖股票的最佳时机4
  • 309 买卖股票的最佳时机含冷冻期
练习
  • 213 打家劫舍2
  • 53 最大子序和
  • 343 整数分解
  • 583 两个字符串的删除操作
  • 646 最长数对链
  • 376 最长摇摆子序列
  • 494 目标和
  • 714 买卖股票的最佳时机含手续费

 

第 8 章 化繁为简的分治法

例题与练习
  • 241 为运算表达式设计优先级

  • 932 漂亮数组 (这技巧不看题解哪里能想得到~ )

  • 312 戳气球

 

第 9 章 巧解数学问题

例题
  • 204 计数质数
  • 504 7进制数
  • 172 阶乘后的0
  • 415 字符串相加
  • 326 3的幂
  • 384 打乱数组
  • 528 按权重随机选择
  • 382 链表随机节点
练习
  • 168 Excel 表列名称
  • 67 二进制求和
  • 238 除自身以外数组的乘积
  • 462 最少移动次数使元素相等
  • 169 多数元素(Boyer-Moore Majority Vote,下次一定)
  • 470 用rand7 实现 rand10 (拒绝采样,下次一定)
  • 202 快乐数 (数学证明,下次一定)

 

第 10 章 神奇的位运算

例题
  • 461 汉明距离
  • 190 颠倒二进制位
  • 136 只出现一次的数字
  • 342 4的幂
  • 318 最大单词长度乘积
  • 338 比特位计数
练习
  • 268 丢失的数字
  • 693 交替位二进制数
  • 476 数字的补数
  • 260 只出现一次的数字3

 

第 11 章 妙用数据结构

数组
  • 448 找到所有数组中消失的数字
  • 48 旋转图像
  • 240 搜索二维数组
  • 769 最多能完成排序的块
栈和队列
  • 232 用队列实现栈
  • 155 最小栈
  • 20 有效的括号
单调栈和优先队列
  • 739 每日温度
  • 23 合并K个升序链表
  • 218 天际线问题
双端队列和哈希表
  • 239 滑动窗口最大值
  • 1 两数之和
  • 128 最长连续序列
  • 149 直线上最多的点数
多重集合、前缀和与积分图
  • 332 重新安排行程(Oh ~ 求解欧拉路径,下次一定!)
  • 303 区域和检索-数组不可变
  • 304 二维区域和检索-矩阵不可变
  • 560 和为K的子数组
练习
  • 566 重塑矩阵
  • 225 用栈实现队列
  • 503 下一个更大元素2
  • 217 存在重复元素
  • 697 数组的度
  • 594 最长和谐子序列
  • 287 寻找重复数
  • 313 超级丑数
  • 870 优势洗牌
  • 307 区域和检索-数组可修改(Oh ~ 线段树,下次一定!)

 

第 12 章 令人头大的字符串

例题
  • 242 有效的字母异位词
  • 205 同构字符串
  • 647 回文字符串
  • 696 计数二进制子串(尴尬,没有读明白题)
  • 227 基本计算器2
  • 28 实现strStr()(KMP算法,下次一定)
练习
  • 409 最长回文串
  • 3 无重复字符的回文串
  • 772 基本计算器3(会员题,下次一定)
  • 5 最长回文子串

 

第 13 章 指针三剑客之一:链表

例题
  • 206 反转链表
  • 21 合并两个有序链表
  • 24 两两交换链表中的节点
  • 160 相交链表
  • 234 回文链表
练习
  • 83 删除排序链表中的重复元素
  • 328 奇偶链表
  • 19 删除链表的倒数第n个节点
  • 148 排序链表

 

第 14 章 指针三剑客之二:树

树的递归
  • 104 二叉树的最大深度
  • 110 平衡二叉树
  • 543 二叉树的直径
  • 437 路径总和3
  • 101 对称二叉树
  • 1110 删点成林
层次遍历和前中后序遍历
  • 637 二叉树的层平均值
  • 105 从前序和中序遍历序列构造二叉树
  • 144 二叉树的前序遍历(迭代)
二叉搜索树和字典树
  • 99 恢复二叉搜索树
  • 669 修剪二叉搜索树
  • 208 实现前缀树(Trie)
练习
  • 226 翻转二叉树
  • 617 合并二叉树
  • 572 另一棵树的子树
  • 404 左叶子之和
  • 513 找树左下角的值
  • 538 把二叉树转化为累加树
  • 235 二叉搜索树的最近公共祖先
  • 530 二叉搜索树的最小绝对差
  • 889 从前序和后序遍历序列构造二叉树
  • 106 从中序和后序遍历序列构造二叉树
  • 94 二叉树的中序遍历(迭代)
  • 145 二叉树的后序遍历(迭代)
  • 236 二叉树的最近公共祖先
  • 109 将有序链表转化为二叉搜索树
  • 897 递增顺序搜索树
  • 653 两数之和4-输入BST
  • 450 删除二叉搜索树中的节点

 

第 15 章 指针三剑客之三:图

例题与练习
  • 785 判断二分图
  • 210 课程表2
  • 1059 从始点到终点的所有路径
  • 1135 最低成本联通所有城市
  • 882 细分图中的可到达节点

 

第 16 章 更加复杂的数据结构

例题与练习
  • 684 冗余连接
  • 146 LRU 缓存
  • 1135 最低成本联通所有城市
  • 380 常数时间插入删除和获取随机元素
  • 432 全O(1) 数据结构(十字链表)
  • 716 最大栈