Skip to content

lyeiso/LeetCode_Hot100_Java_Solution

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 

Repository files navigation

LeetCode_Hot100_Java_Solution

本文将Leetcode hot 100题目按照类型分类。部分题目可能属于多个类型。

刷leetcode hot 100以前需要了解一些基础知识:

  • 常见排序:冒泡排序,插入排序,选择排序,归并排序,快速排序,堆排序。 时间复杂度为O(nlogn):归并排序和堆排序。快速排序时间复杂度最好的情况下是O(nlogn),最坏的情况下是O(n^2)。
  • 字符串的常用方法:length(),substring(),spilt()。 StringBuffer()的常用方法:deleteCharAt(),reverse(),toString(),append(),insert。
  • 常用数据结构及其常用方法:List,HashMap,HashSet,PriorityQueue,stack,queue。
  • Arrays.sort()自定义排序,PriorityQueue()自定义排序。
数据结构 常用方法
List add(),remove()
HashMap put(),size(),remove(),containsKey()
HashSet add(),remove(),size(),contains()
PriorityQueue poll(),offer(),isEmpty(),size(),peek()
stack push(),size(),pop(),isEmpty(),peek()
queue poll(),offer(),isEmpty(),size(),peek()

dp

  • dp数组和下标的含义,递推公式,初始化,遍历顺序。

  • 01背包和完全背包。

题号 题目 题解
198 打家劫舍 Java
238 除自身数组以外的乘积 Java
221 最大正方形 Java
152 乘积最大子数组 Java
139 单词拆分 Java
647 回文子串 Java
322 零钱兑换 Java
494 目标和 Java
416 分割等和子集 Java
337 打家劫舍 III Java
312 戳气球 Java
309 买卖股票的最佳时期含冷冻期 Java
300 最长递增子序列 Java
279 完全平方数 Java
42 接雨水 Java
32 最长有效括号 Java
10 正则表达式匹配 Java
5 最长回文子串 Java
96 不同的二叉搜索树 Java
85 最大矩形 Java
72 编辑距离 Java
70 爬楼梯 Java
62 不同路径 Java
53 最大子数组和 Java

链表

  • 链表的题目往往使用虚拟头结点的方法,以避免对头结点为空的情况进行特判。
  • 做链表的题目是,我们需要记住的是链表的增删节点都是使用的双指针。
题号 题目 题解
160 相交链表 Java
234 回文链表 Java
206 反转链表 Java
148 排序链表 Java
146 LRU 缓存 Java
142 环形链表 II Java
141 环形链表 Java
23 合并 K 个升序链表 Java
21 合并两个有序链表 Java
114 二叉树展开为链表 Java
19 删除链表的倒数第 N 个结点 Java
2 两数相加 Java

单调栈

  • 单调栈按照从栈底到栈顶的大小变化可以分为单调递增栈和单调递减栈。
  • 单调栈中存储的是元素的索引。
题号 题目 题解
739 每日温度 Java
84 柱状图中最大的矩形 Java

构建数据结构

  • 构建特殊数据结构。
题号 题目 题解
207 课程表 Java
399 除法求值 Java
208 实现 Trie (前缀树) Java

二进制

  • ^异或:任何数^自身 = 0,^0不变。
  • &1:判断末尾数是否为1。
  • <<:向左位移1位,>>:向右位移1位。
题号 题目 题解
461 汉明距离 Java
338 比特位计数 Java

贪心

  • 通过局部最优,得到全局最优,需要会自定义排序,建议使用lamda表达式。
题号 题目 题解
406 根据身高重建队列 Java
253 会议室II Java
621 任务调度器 Java

优先队列

  • PriorityQueue是底层是堆排序。
题目 题号 题解
239 滑动窗口最大值 Java
23 合并 K 个升序链表 Java

回溯

  • 回溯三要素:1.传递的参数和返回类型;2.终止条件;3.回溯的逻辑。
题号 题目 题解
22 括号生成 Java
46 全排列 Java
17 电话号码的字母组合 Java
78 子集 Java
39 组合总和 Java

数组

  • 需要会二分法的使用和双指针、滑动窗口。
题号 题目 题解
48 旋转图像 Java
33 搜索旋转排序数组 Java
34 在排序数组中查找元素的第一个和最后一个位置 Java
31 下一个排列 Java
15 三数之和 Java
11 盛最多水的容器 Java
4 寻找两个正序数组的中位数 Java
1 两数之和 Java
75 颜色分类 Java
56 合并区间 Java
55 跳跃游戏 Java
215 数组中的第K个最大元素 Java
287 寻找重复数 Java
283 移动零 Java
240 搜索二维矩阵 II Java

二叉树

  • 需要会前中后序遍历的递归、迭代实现和层序遍历。
题号 题目 题解
236 二叉树的最近公共祖先 Java
226 翻转二叉树 Java
124 二叉树中的最大路径和 Java
297 二叉树的序列化与反序列化 Java
543 二叉树的直径 Java
538 把二叉搜索树转换为累加树 Java
114 二叉树展开为链表 Java
617 合并二叉树 Java
105 从前序与中序遍历序列构造二叉树 Java
104 二叉树的最大深度 Java
102 二叉树的层序遍历 Java
101 对称二叉树 Java
98 验证二叉搜索树 Java
96 不同的二叉搜索树 Java
437 路径总和 III Java
94 二叉树的中序遍历 Java

Stack、Queue、HashMap()、HashSet()

  • Stack、Queue、HashMap和HashSet的常见方法需要会使用。
题号 题目 题解
169 多数元素 Java
128 最长连续序列 Java
438 找到字符串中所有字母异位词 Java
394 字符串解码 Java
560 和为 K 的子数组 Java
20 有效的括号 Java
3 无重复字符的最长子串 Java

深度优先搜索和广度优先搜索

  • 深度优先搜索:按照既定的搜索顺序,在一个方向搜索到头之后,回溯搜索下一个方向。

  • 广度优先搜索:从起始位置开始,逐层遍历(按照距离)所有可能到达的位置。

题号 题目 题解
79 单词搜索 Java
200 岛屿数量 Java

About

Leetcode hot100 Java solution

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published