1. 数组

数组是基本的数据结构,面试中考察数组的题目一般在思维上并不复杂,主要是考查面试者对代码的掌控能力。

  1. 数组下标都是从0开始
  2. 数组在内存空间的地址是连续的

题目:

  • easy

704. 二分查找

27. 移除元素

209. 长度最小的子数组

59. 螺旋矩阵 II

2. 链表

链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域,另一个是指针域(存放指向下一个节点的指针),链表的入口节点称为头节点(head),最后一个节点的指针域指向NULL(空指针)。

链表的三种类型:单链表、双链表、循环链表

题目:

  • easy

203. 移除链表元素

206. 反转链表

  • midding

707. 设计链表

19. 删除链表的倒数第 N 个结点

142. 环形链表 II

3. 哈希表

哈希表(Hash Table),散列表,根据关键码的值直接访问数据的数据结构,一般用来快速判断一个元素是否出现在集合中。

哈希碰撞的两种解决方法:拉链法 、线性探测法

集合 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率
std::set 红黑树 有序 O(logn) O(logn)
std::multiset 红黑树 有序 O(logn) O(logn)
std::unordered_set 哈希表 无序 O(1) O(1)

题目:

  • easy

242. 有效的字母异位词

349. 两个数组的交集

1. 两数之和

  • midding

15. 三数之和

18. 四数之和

4. 字符串

字符串是由若干字符组成的有限序列,也可以理解为一个字符数组。

  • easy

344. 反转字符串

541. 反转字符串 II

28. 实现 strStr()

459. 重复的子字符串

  • midding

151. 颠倒字符串中的单词

5. 栈与队列

队列:先进先出

栈   :先进后出

题目:

  • easy

232. 用栈实现队列

225. 用队列实现栈

20. 有效的括号

  • midding

150. 逆波兰表达式求值

347. 前 K 个高频元素

  • hard

239. 滑动窗口最大值

42. 接雨水

6. 二叉树

二叉树的种类:满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树

二叉树的遍历:深度优先 广度优先(递归:栈  队列)

递归三部曲:

(1)确定递归函数的参数和返回值

(2)确定递归终止条件

(3)确定单层递归的逻辑

题目:

144. 二叉树的前序遍历

94. 二叉树的中序遍历

145. 二叉树的后序遍历

102. 二叉树的层序遍历

226. 翻转二叉树

101. 对称二叉树

104. 二叉树的最大深度

111. 二叉树的最小深度

110. 平衡二叉树

112. 路径总和

257. 二叉树的所有路径

113. 路径总和 II

106. 从中序与后序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树

98. 验证二叉搜索树

617. 合并二叉树

700. 二叉搜索树中的搜索

530. 二叉搜索树的最小绝对差

501. 二叉搜索树中的众数

236. 二叉树的最近公共祖先

235. 二叉搜索树的最近公共祖先

701. 二叉搜索树中的插入操作

450. 删除二叉搜索树中的节点

669. 修剪二叉搜索树

108. 将有序数组转换为二叉搜索树

7. 回溯算法

(1)确定回溯函数的返回值和参数

(2)确定回溯函数的终止条件

(3)确定回溯函数的遍历过程

//回溯算法的循环:
//    1. 求排列for(int i=0; ...)
//    2. 求组合for(int i=startInd; ...)
//note: 要注意去重问题

题目:

77. 组合

216. 组合总和 III

17. 电话号码的字母组合

39. 组合总和

40. 组合总和 II

131. 分割回文串

93. 复原 IP 地址

78. 子集

491. 递增子序列

46. 全排列

47. 全排列 II

51. N 皇后

37. 解数独

8. 贪心算法

解题步骤:
(1)将问题分解为若干子问题

(2)找出贪心策略

(3)求解每一个子问题的最优解

(4)将局部最优堆叠成全局最优

题目:

455. 分发饼干

376. 摆动序列

53. 最大子数组和

122. 买卖股票的最佳时机 II

55. 跳跃游戏

45. 跳跃游戏 II

134. 加油站

135. 分发糖果

860. 柠檬水找零

452. 用最少数量的箭引爆气球

56. 合并区间

738. 单调递增的数字

9. 动态规划

动态规划“五部曲”

(1)确定dp及下标的含义

(2)确定递推公式

(3)初始化dp

(4)确定遍历顺序

(5)举例推导dp

//0-1背包的核心代码
for(int i=0; i<weight.size(); ++i){//容量从大到小遍历,保证每个物品仅添加一次for(int j=bagWeight; j>=weight[i]; --j){dp[j] = max(dp[j], dp[j-weight[i]]+value[i]);}
}//完全背包核心代码
for(int i=0; i<weight.size(); ++i){//容量从小到大遍历,保证每个物品可添加无数次for(int j=weight[i]; j<=bagWeight; ++j){dp[j] = max(dp[j], dp[j-weight[i]]+value[i]);}
}//1. 求最大 dp[j] = max(dp[j], dp[j-weight[i]]+value[i]);
//2. 求组合 dp[j] += dp[j-nums[i]]
//3. 求排列 dp[j] += dp[j-nums[i]]
//求组合数,外层循环遍历物品,内层循环遍历背包
//求排列数,外层循环遍历背包,内层循环遍历物品

题目:

509. 斐波那契数

70. 爬楼梯

746. 使用最小花费爬楼梯

62. 不同路径

63. 不同路径 II

343. 整数拆分

96. 不同的二叉搜索树

416. 分割等和子集

494. 目标和

474. 一和零

518. 零钱兑换 II

377. 组合总和 Ⅳ

322. 零钱兑换

279. 完全平方数

139. 单词拆分

121. 买卖股票的最佳时机

122. 买卖股票的最佳时机 II

123. 买卖股票的最佳时机 III

188. 买卖股票的最佳时机 IV

309. 最佳买卖股票时机含冷冻期

714. 买卖股票的最佳时机含手续费

300. 最长递增子序列

674. 最长连续递增序列

718. 最长重复子数组

1143. 最长公共子序列

1035. 不相交的线

392. 判断子序列

115. 不同的子序列

583. 两个字符串的删除操作

72. 编辑距离

647. 回文子串

516. 最长回文子序列

10. 其他

  • 二分查找

33. 搜索旋转排序数组d

  • 递归

234. 回文链表

  • 并查集

剑指 Offer II 116. 省份数量

  • 拓扑排序

207. 课程表

  • 深度优先

236. 二叉树的最近公共祖先

543. 二叉树的直径

78. 子集

参考文献:《代码随想录lu 跟着Carlarl学算法》 孙秀洋

leetcode分类刷题相关推荐

  1. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  2. LeetCode分类刷题----链表篇

    链表 链表 1.移除链表元素 203.移除链表元素 707.设计链表 2.反转链表 206.反转链表 3.两两交换链表中的节点 24.两两交换链表中的节点 4.删除链表中的倒数第N个节点 19.删除链 ...

  3. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  4. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  5. LeetCode代码刷题(17~24)

    目录 17. 电话号码的字母组合 18. 四数之和 19. 删除链表的倒数第 N 个结点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表 ...

  6. 【Leetcode】刷题题单记录

    程序=算法+数据结构,不管干哪一行,只要涉及到编程算法始终是最重要的!!! 算法基础差,变做题巩固!!! LeetCode刷题,搞起来! 由于我只会C++和Python, 所以题解只有C++ 和 Py ...

  7. LeetCode算法刷题目录 (Java)

    目录 1.数学基础 1.1.位运算 1.2.其它 2.数据结构 2.1.线性表 2.1.1.数组(双指针) 2.1.2.链表(双指针) 2.1.3.栈 2.1.4.队列 2.1.5.字符串 2.1.6 ...

  8. 神器!在IDE中刷LeetCode,刷题效率直线up!

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 量子位 报道 | 公众号 QbitAI 今天为大家带来两个干货分享,让你的刷题效率up up up! 首先,工欲善其事必先利其器. ...

  9. 看了这篇 LeetCode 的刷题心得,再也不用抄别人代码了

    作者:VioletJack 原文:<LeetCode 算法题刷题心得>https://www.jianshu.com/p/8876704ea9c8 花了十几天,把<算法>看了一 ...

最新文章

  1. bat maven 一键打包1.0
  2. windows上不同版本的CUDA、cudnn是否能够共用?
  3. WinForm编程数据视图之DataGridView浅析
  4. 关于HttpWebRequest对象的KeepAlive属性
  5. eclipse debug 工程源码时出现source not found问题解决
  6. Grow heap (frag case) to 6.437MB for 1114126-byte allocation
  7. Windows 7 With SP1 MSDN版 含简体中文版
  8. 清除vlan.dat文件
  9. winetricks启动报错:please retest in a clean 32-bit WINEPREFIX before reporting a bug解决
  10. 2022百度之星程序设计大赛 - 复赛 1003 最大值
  11. 【软件工程】图书馆自习室及座位管理系统的分析与设计
  12. 3.14 使用画笔工具给头发着色 [Ps教程]
  13. http post java工具类_java实现Http post(参数json格式)、get 请求的HttpUtil工具类
  14. 计算机体系结构量化研究方法学习(二)
  15. userdel: user user is currently used by process 18752解决办法
  16. C#简易计算器(加减乘除三角函数运算)
  17. Facebook账号注册步骤
  18. Linux系统安装Anaconda3保姆级教程
  19. 2022北京养老展(中国国际老年产业博览会)
  20. matlab 函数句柄@的介绍_什么是函数句柄(转)

热门文章

  1. 官网下载java mysql_jdbc驱动包(图文)
  2. 会话管理_优秀会话管理指南
  3. 网曝“快手”上现自虐变态视频 低俗粗鲁太过分
  4. 树莓派原生系统安装ROS(含网络代理,ROS编译安装以及ROS小车制作过程)
  5. 电脑密码忘记了? 使用U盘启动破解电脑密码
  6. java微信公众号分享功能
  7. 永磁同步电机矢量控制基础补充(一)——如何绘制电机输出的磁链
  8. Outlook邮箱添加163邮箱
  9. unity实战之lol技能释放范围
  10. 新学期,新FLAG —— 大一新生