
LeetCode题目总结
KAIKAI_ING
如果现在不牛,不是你的错。如果将来不牛,就是现在你的错。
展开
-
LeetCode 235. 二叉搜索树的最近公共祖先 Lowest Common Ancestor of a Binary Search Tree
7-6 二分搜索树中的问题 Lowest Common Ancestor of a Binary Search Tree二分搜索树中的递归二分搜索树:每个节点的键值大于左孩子;每个节点的键值小于右孩子;以左右孩子为根的子树仍然为二分搜索树。二分搜索树中的基本操作:- 插入insert- 查找find- 删除delete- 最大值、最小值、minimum、maximum- 前驱...原创 2018-10-11 10:26:20 · 290 阅读 · 0 评论 -
LeetCode 349. 两个数组的交集 Intersection of Two Arrays
4-1 set的使用 Intersection of Two Arrays题目: LeetCode 349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输...原创 2018-10-13 09:09:20 · 456 阅读 · 0 评论 -
LeetCode 350. 两个数组的交集 II Intersection of Two Arrays II
4-2 map的使用 Intersection of Two Arrays II题目: LeetCode 350. 两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,...原创 2018-10-13 09:09:01 · 463 阅读 · 0 评论 -
LeetCode 1. 两数之和 Two Sum
4-4 使用查找表的经典问题 Two Sum题目: LeetCode 1. 两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]import ...原创 2018-10-13 09:08:37 · 280 阅读 · 0 评论 -
LeetCode 447. 回旋镖的数量 Number of Boomerangs
4-6 灵活选择键值 Number of Boomerangs题目: LeetCode 447. 回旋镖的数量给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:...原创 2018-10-12 10:10:00 · 356 阅读 · 0 评论 -
LeetCode 219. 存在重复元素 II Contain Duplicate II
4-7 查找表和滑动窗口 Contain Duplicate II题目: LeetCode 219. 存在重复元素 II给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: n...原创 2018-10-05 12:57:08 · 302 阅读 · 0 评论 -
LeetCode 220. 存在重复元素 III Contain Duplicate III
4-8 二分搜索树底层实现的顺序性 Contain Duplicate III题目: LeetCode 220. 存在重复元素 III给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0...原创 2018-10-05 12:56:03 · 572 阅读 · 0 评论 -
二分查找法
3-1 从二分查找法看如何写出正确的程序二分查找法思想:将查找的键值和数组的的中间键值作比较,如果被查找键值小于中间键值,就在左子数组中继续查找;如果大于中间键值,就在右子数组中继续查找;否则,中间键值就是要找的元素。注意:对于有序数列,才能使用二分查找法(排序的作用)循环不变量(Loop invariant):所谓循环不变量是指一种在整个循环过程中保持不变的性质,必须在以下3种情况下均保...原创 2018-10-05 11:07:23 · 542 阅读 · 0 评论 -
LeetCode 75. 颜色分类 Sort Colors
3-5 三路快排partition思路的应用 Sort Color题目:LeetCode 75. 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0...原创 2018-10-05 11:06:35 · 399 阅读 · 0 评论 -
LeetCode 300. 最长上升子序列 Longest Increasing Subsequence
9-8 LIS问题 Longest Increasing Subsequence题目: LeetCode 300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可...原创 2018-10-09 10:02:55 · 507 阅读 · 0 评论 -
LeetCode 51. N皇后 N Queens
8-8 回溯法是经典人工智能的基础 N Queens题目: LeetCode 51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示...原创 2018-10-10 09:25:08 · 591 阅读 · 0 评论 -
LeetCode 416. 分割等和子集 Partition Equal Subset Sum
9-7 面试中的0-1背包问题 Partition Equal Subset Sum题目: LeetCode 416. 分割等和子集给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5...原创 2018-10-10 09:25:47 · 639 阅读 · 0 评论 -
LeetCode 17. 电话号码的字母组合 Letter Combinations of a Phone Number
8-1 树形问题 Letter Combinations of a Phone Number题目: LeetCode 17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd...原创 2018-10-10 09:29:27 · 499 阅读 · 0 评论 -
LeetCode 46. 全排列 Permutations
8-3 排列问题 Permutations题目: LeetCode 46. 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]import java.util.List;import java.util.ArrayList;im...原创 2018-10-10 09:28:58 · 293 阅读 · 0 评论 -
LeetCode 77. 组合 Combinations
8-4 组合问题 Combinations题目: LeetCode 77. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]import java.util.List;import java.util.ArrayList...原创 2018-10-10 09:28:38 · 372 阅读 · 0 评论 -
LeetCode 79. 单词搜索 Word Search
8-6 二维平面上的回溯法 Word Search题目: LeetCode 79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],...原创 2018-10-10 09:28:16 · 437 阅读 · 0 评论 -
LeetCode 200. 岛屿的个数 Number of Islands
8-7 floodfill算法,一类经典问题 Number of Islands-题目: LeetCode 200. 岛屿的个数给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 ...原创 2018-10-10 09:27:47 · 494 阅读 · 0 评论 -
LeetCode 70. 爬楼梯 Climbing Stairs
9-2 第一个动态规划问题 Climbing Stairs题目: LeetCode 70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: ...原创 2018-10-10 09:27:19 · 322 阅读 · 0 评论 -
LeetCode 343. 整数拆分 Integer Break
9-3 发现重叠子问题 Integer Break题目: LeetCode 343. 整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36...原创 2018-10-10 09:26:39 · 402 阅读 · 0 评论 -
LeetCode 198. 打家劫舍 House Robber
9-4 状态的定义和状态转移 House Robber题目: LeetCode 198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:...原创 2018-10-10 09:26:12 · 312 阅读 · 0 评论 -
LeetCode 167. 两数之和II-输入有序数组 Two Sum II - Input Array is Sorted
3-6 对撞指针 Two Sum II - Input Array is Sorted双索引技术(Two Points)对撞指针滑动窗口题目:LeetCode 167. 两数之和II-输入有序数组给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返...原创 2018-10-05 11:04:31 · 322 阅读 · 0 评论 -
LeetCode 283. 移动零 Move Zeros
3-3 在LeetCode上解决第一个问题 Move Zeros题目 LeetCode 283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。import java.util.*;// 2...原创 2018-10-05 11:03:36 · 389 阅读 · 0 评论 -
LeetCode 209. 长度最小的子数组 Minimum Size Subarray Sum
3-7 滑动窗口 Minimum Size Subarray Sum题目:LeetCode 209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度...原创 2018-10-05 11:02:31 · 592 阅读 · 0 评论 -
LeetCode 144. 二叉树的前序遍历 Binary Tree Preorder Traversal
题目: LeetCode 144. 二叉树的前序遍历给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?递归算法import java.util.ArrayList;import java.util.List;/// 144. Binary Tree Preorde...原创 2018-10-11 10:30:38 · 620 阅读 · 0 评论 -
LeetCode 94. 二叉树的中序遍历 Binary Tree Inorder Traversal
题目: LeetCode 94. 二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?递归算法import java.util.ArrayList;import java.util.List;/// 94. Binary Tree Inorder Tr...原创 2018-10-11 10:30:08 · 629 阅读 · 0 评论 -
LeetCode 145. 二叉树的后序遍历 Binary Tree Postorder Traversal
题目: LeetCode 145. 二叉树的后序遍历给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?递归算法import java.util.ArrayList;import java.util.List;/// 145. Binary Tree Postord...原创 2018-10-11 10:29:48 · 646 阅读 · 0 评论 -
LeetCode 127. 单词接龙 Word Ladder
题目: LeetCode 127. 单词接龙 Word Ladder给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord的最短转换序列的长度。转换需遵循如下规则:1. 每次转换只能改变一个字母。2. 转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所...原创 2018-10-11 10:29:21 · 451 阅读 · 0 评论 -
LeetCode 104. 二叉树的最大深度 Maximum Depth of Binary Tree
7-1 二叉树天然的递归结构题目: LeetCode 104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。// 104. Maximum Depth...原创 2018-10-11 10:28:51 · 424 阅读 · 0 评论 -
LeetCode 226. 翻转二叉树 Invert Binary Tree
7-2 一个简单的二叉树问题引发的血案 Invert Binary Tree题目: LeetCode 226. 翻转二叉树翻转一棵二叉树。示例:输入: 4/ 2 7/ \ / 1 3 6 9输出: 4/ 7 2/ \ / 9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们...原创 2018-10-11 10:28:11 · 373 阅读 · 0 评论 -
LeetCode 112. 路径总和 Path Sum
7-3 注意递归的终止条件 Path Sum题目: LeetCode 112. 路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / ...原创 2018-10-11 10:27:46 · 338 阅读 · 0 评论 -
LeetCode 257. 二叉树的所有路径 Binary Tree Paths
7-4 定义递归问题 Binary Tree Path题目: LeetCode 257. 二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ 2 35输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2-&原创 2018-10-11 10:27:18 · 268 阅读 · 0 评论 -
LeetCode 347. 前K个高频元素 Top K Frequent Elements
6-7 优先队列相关的算法问题 Top K Frequent Elements题目: LeetCode 347. 前K个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的...原创 2018-10-12 10:06:48 · 300 阅读 · 0 评论 -
LeetCode 279. 完全平方数 Perfect Squares
6-5 BFS和图的最短路径 Perfect Squares题目: LeetCode 279. 完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 ...原创 2018-10-12 10:07:09 · 542 阅读 · 0 评论 -
LeetCode 102. 二叉树的层次遍历 Binary Tree Level Order Traversal
6-4 队列的典型应用 Binary Tree Level Order Traversal队列的基本应用:广度优先遍历树:层次遍历图:无权图的最短路径题目: LeetCode 102. 二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ ...原创 2018-10-12 10:07:31 · 539 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串 Longest Substring Without Repeating Characters
3-8 在滑动窗口中做记录 Longest Substring Without Repeating Characters题目:LeetCode 3. 无重复字符的最长子串给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 无重复字符的最长子串是 “abc”,其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: ...原创 2018-10-05 11:00:07 · 441 阅读 · 0 评论 -
LeetCode 454. 四数相加 II 4Sum II
4-5 灵活选择键值 4Sum II题目: LeetCode 454. 四数相加 II给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 ...原创 2018-10-13 09:08:15 · 731 阅读 · 0 评论 -
LeetCode 206. 反转链表 Reverse Linked List
5-1 链表,在节点间穿针引线 Reverse Linked List题目: LeetCode 206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1-&a原创 2018-10-12 10:09:42 · 293 阅读 · 0 评论 -
LeetCode 203. 删除链表中的节点 Remove Linked List Elements
5-3 设立链表的虚拟头结点 Remove Linked List Elements题目: LeetCode 203. 删除链表中的节点删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2-&原创 2018-10-12 10:09:18 · 367 阅读 · 0 评论 -
LeetCode 24. 两两交换链表中的节点 Swap Nodes in Pairs
5-4 复杂的穿针引线 Swap Nodes in Pairs题目: LeetCode 24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节原创 2018-10-12 10:08:58 · 291 阅读 · 0 评论 -
LeetCode 237. 删除链表中的节点 Delete Node in a Linked List
5-5 不仅仅是穿针引线 Delete Node in a Linked List题目: LeetCode 237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,...原创 2018-10-12 10:08:31 · 225 阅读 · 0 评论