ACM金牌选手整理的【LeetCode刷题顺序】

一只编程熊
• 阅读 1602

ACM金牌选手整理的【LeetCode刷题顺序】

算法和数据结构 知识结构图

首先,了解算法和数据结构有哪些知识点,在学习中形成 大局观,对学习和刷题十分有帮助。

下面是我花了一天时间整理的算法和数据结构的知识结构,大家可以看看。

ACM金牌选手整理的【LeetCode刷题顺序】

后面是为大家 精心挑选的LeetCode题单,并根据题目知识点的类型分好了类别,大家可以根据每个知识点,进行有针对性的刷题。

数据结构

数组&双指针

  1. LeetCode 1. 两数之和

  2. LeetCode 4. 寻找两个正序数组的中位数

  3. LeetCode 15. 三数之和

  4. LeetCode 75. 颜色分类

  5. LeetCode 76. 最小覆盖子串

  6. LeetCode 142. 环形链表 II

  7. LeetCode 234. 回文链表

  8. LeetCode 283. 移动零

链表

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

  2. LeetCode 148. 排序链表

  3. LeetCode 160. 相交链表

  4. LeetCode 206. 反转链表

队列&栈

  1. LeetCode 20. 有效的括号

  2. LeetCode 21. 合并两个有序链表

  3. LeetCode 84. 柱状图中最大的矩形

  4. LeetCode 85. 最大矩形

  5. LeetCode 155. 最小栈

  6. LeetCode 239. 滑动窗口最大值

  7. LeetCode 394. 字符串解码

  8. LeetCode 739. 每日温度

  9. LeetCode 3. 无重复字符的最长子串

哈希表

  1. LeetCode 49. 字母异位词分组

  2. 128. 最长连续序列

  3. LeetCode 141. 环形链表

  4. LeetCode 146. LRU 缓存机制

  5. LeetCode 560. 和为K的子数组

二叉树

  1. LeetCode 94. 二叉树的中序遍历

  2. 101. 对称二叉树

  3. 102. 二叉树的层序遍历

  4. LeetCode 104. 二叉树的最大深度

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

  6. LeetCode 114. 二叉树展开为链表

  7. LeetCode 543. 二叉树的直径

二叉搜索树

  1. LeetCode 96. 不同的二叉搜索树
  2. LeetCode 98. 验证二叉搜索树

算法

模拟

  1. LeetCode 48. 旋转图像

贪心

  1. LeetCode 11. 盛最多水的容器
  2. LeetCode 714. 买卖股票的最佳时机含手续费
  3. LeetCode 122. 买卖股票的最佳时机 II
  4. LeetCode 55. 跳跃游戏
  5. LeetCode 309. 最佳买卖股票时机含冷冻期
  6. LeetCode 406. 根据身高重建队列

二分

  1. LeetCode 33. 搜索旋转排序数组
  2. LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

递归&回溯

  1. LeetCode 17. 电话号码的字母组合

  2. LeetCode 22. 括号生成

  3. LeetCode 39. 组合总和

  4. LeetCode 46. 全排列

  5. LeetCode 78. 子集

  6. LeetCode 79. 单词搜索

  7. LeetCode 226. 翻转二叉树

深度优先搜索DFS

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

  2. LeetCode 301. 删除无效的括号

宽度优先搜索BFS

  1. LeetCode 200. 岛屿数量

  2. LeetCode 617. 合并二叉树

分治

  1. LeetCode 53. 最大子序和

排序算法

  1. LeetCode 56. 合并区间

  2. LeetCode 215. 数组中的第K个最大元素

  3. LeetCode 347. 前 K 个高频元素

Manacher算法

  1. LeetCode 5. 最长回文子串

  2. LeetCode 647. 回文子串

字典树Trie

  1. LeetCode 139. 单词拆分

  2. LeetCode 208. 实现 Trie (前缀树)

动态规划

  1. LeetCode 10. 正则表达式匹配

  2. LeetCode 32. 最长有效括号

  3. LeetCode 42. 接雨水

  4. LeetCode 62. 不同路径

  5. LeetCode 64. 最小路径和

  6. LeetCode 70. 爬楼梯

  7. LeetCode 72. 编辑距离

  8. LeetCode 139. 单词拆分

  9. LeetCode 152. 乘积最大子数组

  10. LeetCode 198. 打家劫舍

  11. LeetCode 221. 最大正方形

  12. LeetCode 300. 最长递增子序列

  13. LeetCode 337. 打家劫舍 III

  14. LeetCode 416. 分割等和子集

  15. LeetCode 494. 目标和

最短路算法

  1. LeetCode 743. 网络延迟时间

最小生成树

  1. 1584. 连接所有点的最小费用

拓扑排序

  1. LeetCode 207. 课程表

并查集

  1. LeetCode 399. 除法求值

我把学习 算法和数据结构和计算机核心的书籍 都整理好了,在学习计算机的路上肯定能用到,身边的同学都在看,现在免费送给大家,可以从下面链接领取。

书单

https://mp.weixin.qq.com/s/vtIjAQQdEik2A7NCIamSqA

ACM金牌选手整理的【LeetCode刷题顺序】

下面讲一下如何刷题。

ACM金牌选手整理的【LeetCode刷题顺序】

如何正确的做一道题

  • 从简入手: 先从简单暴力(时间复杂度高)的方法入手。
  • 优化: 思考如何在第一步的基础上,如何优化算法,降低时间复杂度。
  • 构思代码: 有了以上两步,我们此时应该已经有了一个正确的想法,此时我们应该构思代码,有那几部分,每部分实现什么功能,代码怎么写。而不是直接闷头去写代码,因为很多时候没想清楚,直接去写代码,会导致写了一半发现思路不对,写的代码都是错误的。
  • 写代码: 实现第三步代码。
  • (Debug): 如果我们的题目没有通过测试,应该检查代码是不是有bug、思路对不对等。
  • 总结与反思: 题目通过了,我们应该总结一下这道题考察的知识点、切入的角度、同类型的题目等,同时思考有没有更优的办法。

做到以上几点,一道题学习的就很透了,遇到同类型的题目可以举一反三啦。

最后

我是编程熊,字节跳动、旷视科技前员工、ACM金牌选手。

微信搜索【一只编程熊】,获取 学习资源、面试、内推交流群。 ACM金牌选手整理的【LeetCode刷题顺序】

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
一只编程熊
一只编程熊
Lv1
公众号: 一只编程熊;字节跳动、旷视科技员工,ACM金牌
文章
2
粉丝
1
获赞
2