![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode精选Top面试题
杨小帆_
沉下心来做技术
展开
-
LeetCode 精选 TOP 面试题(Java 实现)—— 反转链表 II
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4...原创 2020-02-22 08:23:07 · 293 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 变异版二叉搜索树与双向链表
文章目录一、题目描述1.1 题目1.2 知识点二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目变异版二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表...原创 2020-02-21 07:18:34 · 272 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 变异版寻找重复数
文章目录一、题目描述1.1 题目1.2 知识点二、解题思路2.1 解题思路2.2 优化思路2.3 类似题型三、实现代码3.1 代码实现一、题目描述1.1 题目变异版寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数,找出所有重复数。示例 1:输入: = 4,5,7,1,4,6,5输出: = ...原创 2020-02-18 11:48:46 · 235 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 最小路径和
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现(动态规划)一、题目描述1.1 题目最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1],...原创 2020-02-16 07:36:18 · 402 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 完全平方数
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相似问题三、实现代码3.1 代码实现(动态规划)3.2 代码实现(四平方定理)一、题目描述1.1 题目完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 1...原创 2020-02-08 08:05:49 · 235 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 奇偶链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes)...原创 2020-02-07 09:15:04 · 250 阅读 · 1 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 递增的三元子序列
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目递增的三元子序列给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, 使得 arr[i] <...原创 2020-02-07 08:16:53 · 160 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 寻找重复数
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路(二分查找)2.2 解题思路(快慢指针)三、实现代码3.1 代码实现3.2 优化实现一、题目描述1.1 题目寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。...原创 2020-02-07 07:59:12 · 152 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 零钱兑换
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], a...原创 2020-02-06 09:27:11 · 277 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 最长上升子序列
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路(动态规划)2.2 解题思路(动态规划+二分查找)三、实现代码3.1 代码实现(时间复杂度 O(n^2))3.2 优化实现(时间复杂度 O(nlogn))一、题目描述1.1 题目最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3...原创 2020-02-06 09:02:01 · 420 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 有效的字母异位词
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相似问题三、实现代码3.1 代码实现3.2 代码优化一、题目描述1.1 题目有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例...原创 2020-02-06 07:37:11 · 134 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 二叉搜索树中第K小的元素
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目二叉搜索树中第K小的元素给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,...原创 2020-02-05 09:23:35 · 227 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 搜索二维矩阵 II
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:(1)每行的元素从左到右升序排列。(2)每列的元素从上到下升序排列。示例:现有矩阵 matrix 如...原创 2020-02-05 09:08:23 · 172 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 滑动窗口最大值
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现3.2 代码实现(精简版)一、题目描述1.1 题目滑动窗口最大值给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:...原创 2020-02-05 08:56:27 · 511 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 除自身以外数组的乘积
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目除自身以外数组的乘积给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]...原创 2020-02-05 08:05:34 · 250 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 删除链表中的节点
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9]...原创 2020-02-05 07:53:14 · 111 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 二叉树的最近公共祖先
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节...原创 2020-02-05 07:44:43 · 249 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 排序链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相似问题三、实现代码3.1 代码实现一、题目描述1.1 题目排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: ...原创 2020-01-27 21:38:34 · 265 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 计数质数
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。1.2 知识点哈希表数学1.3 题目链接https://...原创 2020-01-27 18:59:44 · 247 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— Excel表列序号
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目Excel表列序号给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ......原创 2020-01-27 18:16:27 · 171 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 多数元素
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例...原创 2020-01-27 18:10:38 · 341 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 相交链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 热评解题思路三、实现代码3.1 代码实现(热评)一、题目描述1.1 题目相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5...原创 2020-01-27 17:54:55 · 242 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 寻找峰值
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路(LeetCode 题解)三、实现代码3.1 代码实现一、题目描述1.1 题目寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位...原创 2020-01-27 17:35:10 · 186 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 杨辉三角
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,...原创 2020-01-23 22:58:36 · 239 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 将有序数组转换为二叉搜索树
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,...原创 2020-01-23 22:29:10 · 169 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 复制带随机指针的链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一、题目描述1.1 题目复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, rando...原创 2020-01-23 22:01:54 · 129 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 单词拆分
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相关题目三、实现代码3.1 代码实现一、题目描述1.1 题目单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。...原创 2020-01-23 21:42:56 · 206 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 乘积最大子序列
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路一2.2 解题思路二三、实现代码3.1 代码实现(一)3.2 代码实现(二)一、题目描述1.1 题目乘积最大子序列给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3]...原创 2020-01-23 21:20:39 · 227 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 环形链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路2.2 相关题型三、实现代码3.1 代码实现一、题目描述1.1 题目环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head =...原创 2020-01-21 22:12:57 · 148 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 合并两个有序链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->...原创 2020-01-21 09:49:26 · 190 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 二叉树的最大深度
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3...原创 2020-01-21 09:42:20 · 197 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 最小栈
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。(1)push(x) – 将元素 x 推入栈中。(2)pop() – 删除栈顶的元素。(3)top() – 获取栈顶元素。(4)getMin() ...原创 2020-01-21 09:36:01 · 143 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 对称二叉树
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 自研实现(递归)3.2 示例代码(迭代)一、题目描述1.1 题目对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面...原创 2020-01-20 11:51:52 · 206 阅读 · 1 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 删除排序链表中的重复元素
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->...原创 2020-01-20 11:25:45 · 239 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 反转链表
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 迭代实现(头插法)3.2 递归法(尾递归)一、题目描述1.1 题目反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:...原创 2020-01-20 09:43:09 · 175 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 存在重复元素
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现3.2 另一种思路一、题目描述1.1 题目存在重复元素给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true...原创 2020-01-20 09:31:30 · 156 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 逆波兰表达式求值
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目逆波兰表达式求值根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值...原创 2020-01-19 23:12:04 · 195 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 数组中的第K个最大元素
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路2.2 相关知识点三、实现代码3.1 自研实现3.2 示例代码(堆)一、题目描述1.1 题目数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4]...原创 2020-01-19 22:43:00 · 293 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 打家劫舍
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现一、题目描述1.1 题目打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,...原创 2020-01-19 17:20:47 · 203 阅读 · 0 评论 -
LeetCode 精选 TOP 面试题(Java 实现)—— 位1的个数
文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 基本实现3.2 优化实现一、题目描述1.1 题目位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输...原创 2020-01-19 16:55:04 · 213 阅读 · 0 评论