LeetCode-TOP面试
Heroin X
文艺情怀的理工直男
展开
-
LeetCode-二叉树的遍历
94. 二叉树的中序遍历-M解法1-递归class Solution { List<Integer> res = new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { if (root == null){ return res; } inorderTraversal(root.left)原创 2020-10-04 10:23:10 · 142 阅读 · 0 评论 -
LeetCode-Tree-113-M:路径总和II(Path Sum II)
文章目录思路解法-wait给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 ...原创 2020-03-19 11:33:17 · 152 阅读 · 0 评论 -
LeetCode-Tree-112-E:路径总和(Path Sum)
文章目录思路解法解法1-2给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2020-03-19 11:29:32 · 123 阅读 · 0 评论 -
LeetCode-Array-162-M: 寻找峰值(Find Peak Element )
文章目录思路解法1解法1的优化峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的...原创 2020-03-01 10:09:09 · 168 阅读 · 0 评论 -
LeetCode-Array&DP-152-M: 乘积最大子序列(Maximum Product Subarray)
文章目录思路解法1-暴力解法2-动态规划-wait给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。思路(1)暴力遍历,两层循环。解法1-暴力执行用时 :109 ms, 在所有 Java 提交中击败了6.05%的用户内存消耗 :38.5 MB...原创 2020-02-29 17:32:03 · 126 阅读 · 0 评论 -
LeetCode-Array-128-H: 最长连续序列(Longest Consecutive Sequence)
文章目录思路解法1-暴力解法2-wait给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路(1)暴力。借助哈希函数,逐个遍历。解法1-暴力执行用时 :703 ms, 在所有 Java 提交中击败了5.0...原创 2020-02-28 10:39:25 · 152 阅读 · 0 评论 -
LeetCode-Array-121-E: 买卖股票的最佳时机I(Best Time to Buy and Sell Stock I)
文章目录思路解法1解法2wait给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = ...原创 2020-02-27 13:04:58 · 120 阅读 · 0 评论 -
LeetCode-Array-118-E:杨辉三角(Pascal's Triangle)
文章目录思路解法思路(1)普通遍历,根据数学规律层次添加。解法执行用时 :1 ms, 在所有 Java 提交中击败了96.21%的用户内存消耗 :37 MB, 在所有 Java 提交中击败了5.12%的用户class Solution { public List<List<Integer>> generate(int numRows) { ...原创 2020-02-27 12:38:50 · 93 阅读 · 0 评论 -
LeetCode-Array-88-E:合并两个有序数组(Merge Sorted Array)
文章目录思路解法给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2020-02-26 11:16:48 · 80 阅读 · 0 评论 -
LeetCode-Array&Backtracking -79-M:单词搜索(Word Search)
文章目录思路解法给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED...原创 2020-02-14 20:54:23 · 113 阅读 · 0 评论 -
LeetCode-Array -73-M:矩阵置零(Set Matrix Zeroes)
文章目录思路解法1-暴力解法2-wait给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]进阶:一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的...原创 2020-02-13 21:50:38 · 103 阅读 · 0 评论 -
LeetCode-Array -66-E:加一(Plus One)
文章目录思路解法1-数学思路(1)参见 黄凯剑的讨论区发言。(2)刚开始想到的是位运算相关,但是也比较模糊。解法1-数学执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗 :35 MB, 在所有 Java 提交中击败了63.96%的用户class Solution { public int[] plusOne(int[] digits) {...原创 2020-02-13 11:58:19 · 87 阅读 · 0 评论 -
LeetCode-Array&DP -62-M: 不同路径(Unique Paths)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> ...原创 2020-02-12 21:00:21 · 84 阅读 · 0 评论 -
LeetCode-Array-54-M: 螺旋矩阵(Spiral Matrix)
文章目录思路解法-遍历给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]思路(1)参见 螺旋矩阵——by 力扣 (LeetCode) 方法2(2)边界控制需要注意。解法-遍历cl...原创 2020-02-12 14:01:05 · 88 阅读 · 0 评论 -
LeetCode-Array-53-E-最大子序和(Maximum Subarray)
文章目录思路解法1-暴力解法2-一次遍历解法3-分治-wait给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路...原创 2020-02-12 11:23:29 · 121 阅读 · 0 评论 -
LeetCode-Array-48-M:旋转图像( Rotate Image)
文章目录思路-wait解法给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]...原创 2020-02-11 22:15:36 · 101 阅读 · 0 评论 -
LeetCode-Array-41-H: 缺失的第一个正数( First Missing Positive)
文章目录思路解法1解法1-2——待续给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。思路遍历一次数组把大于等于1的和小于数组大小的值放到原数组对应位置,然后再遍历一次数组查当前下标是否和值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么答案就是数组...原创 2020-02-11 21:03:34 · 114 阅读 · 0 评论 -
LeetCode-Array&Binary Search-34-M:在排序数组中查找元素的第一个和最后一个位置
文章目录思路解法1-暴力解法2-二分解法2-2解法3-递归二分给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]思路...原创 2020-02-11 19:41:50 · 127 阅读 · 0 评论 -
LeetCode-Array&Binary Search-33-M:搜索旋转排序数组(Search in Rotated Sorted Array)
文章目录思路解法假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1...原创 2020-02-11 15:51:50 · 315 阅读 · 0 评论 -
LeetCode-Array-26-E:删除排序数组中的重复项(Remove Duplicates from Sorted Array)
文章目录思路解法给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。思路...原创 2020-02-10 17:04:58 · 115 阅读 · 0 评论 -
LeetCode-Array-15-M:三数之和(3Sum)
文章目录思路解法1-暴力-WA给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思...原创 2020-02-10 12:03:55 · 108 阅读 · 0 评论 -
LeetCode-Array-11-M: 盛最多水的容器(Container With Most Water)
文章目录思路解法-双指针给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入: [1,8,6,2,5,4,8,3,7]输出: 49思...原创 2020-02-10 08:52:30 · 125 阅读 · 0 评论 -
LeetCode-Array-4-H:寻找两个有序数组的中位数(Median of Two Sorted Arrays)
文章目录思路解法给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。思路(1)详细通俗的思路分析,多解法——by windliang解法class Solution { public double findMedian...原创 2020-02-09 16:14:16 · 216 阅读 · 0 评论 -
LeetCode-Array-1-E:两数之和(Two Sum)
文章目录Array系列题目思路解法1-暴力解法2-HashMap给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] =...原创 2020-02-08 15:04:54 · 133 阅读 · 0 评论 -
LeetCode-BFS&DP-279-M:完全平方数(Perfect Squares)
文章目录思路解法给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。思路(1)想到了动态规划问题。包括一些思路。首先找到距离n最近的点,减去之后,再找剩下的值的最近点,依次循环。(2)画解算法:279. 完全平方数——by 灵魂画手(3)不只是答案,而是动态规划类题的思考过程——by Elon解法执行...原创 2020-02-07 22:43:40 · 134 阅读 · 0 评论 -
LeetCode-BFS-127-M:单词接龙 (Word Ladder)
文章目录思路-wait解法给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beg...原创 2020-02-06 17:37:28 · 202 阅读 · 0 评论 -
LeetCode-DFS&Graph-210-H:矩阵中的最长递增路径( Longest Increasing Path in a Matrix)
文章目录思路-wait解法给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[[9,9,4],[6,6,8],[2,1,1]]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。思路-wait解法...原创 2020-02-05 17:36:53 · 96 阅读 · 0 评论 -
LeetCode-DFS&Graph-210-M:课程表 II (Course Schedule II )
文章目录思路解法现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组示例 1:输入: 2, [[1,0...原创 2020-02-05 11:38:18 · 208 阅读 · 0 评论 -
LeetCode-DFS&Graph-207-M:课程表(Course Schedule)
文章目录思路解法现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以...原创 2020-02-05 11:35:11 · 199 阅读 · 0 评论 -
LeetCode-DFS-200-M:岛屿数量(Number of Islands)
文章目录思路解法1-深搜解法2-广搜给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。输入:11110110101100000000输出: 1思路(1)代码参考岛屿数量 (深度优先遍历DFS or 广度优先遍历BFS)——by Krahets,写的...原创 2020-02-05 11:11:48 · 282 阅读 · 0 评论 -
LeetCode-DFS&BFS-130-M:被围绕的区域(Surrounded Regions)
文章目录Depth-first Search系列问题:思路解法给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X XDepth-first Searc...原创 2020-02-04 21:30:12 · 212 阅读 · 0 评论 -
LeetCode-Bit Manipulation-371-E:两整数之和(Sum of Two Integers)
文章目录思路解法不使用运算符 + 和 - ,计算两整数 a 、b 之和。思路(1)位运算详解以及在 Python 中需要的特殊处理-江不知a + b 的问题拆分为 (a 和 b 的无进位结果) + (a 和 b 的进位结果)(1)无进位加法使用异或运算计算得出(2)进位结果使用与运算和移位运算计算得出(3)循环此过程,直到进位为 0解法...原创 2020-02-04 19:35:01 · 85 阅读 · 0 评论 -
LeetCode-Bit Manipulation-268-E:缺失数字(Missing Number)
文章目录思路解法1-位运算给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。输入: [3,0,1]输出: 2思路LeetCode官方(1)位运算missing=4∧(0∧0)∧(1∧1)∧(2∧3)∧(3∧4)=(4∧4)∧(0∧0)∧(1∧1)∧(3∧3)∧2=0∧0∧0∧0∧2=2解法1-位运算时间...原创 2020-02-04 17:04:57 · 139 阅读 · 0 评论 -
LeetCode-Bit Manipulation-191-E:位1的个数(Number of 1 Bits)
文章目录思路解法1-位解法2-java解法3编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。思路(1)Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)-_赖宝(2)leetcode官方题解解法1-位(1)位与 &。二进制中两个数都为1 结果才为1。(2)移位运算符,无符号右移 >>...原创 2020-02-04 11:48:39 · 114 阅读 · 0 评论 -
LeetCode-Bit Manipulation-190-E:颠倒二进制位(Majority Element)
文章目录思路解法思路详细通俗的思路分析,多解法-windliang解法public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int res = 0; int count = 0; whil...原创 2020-02-03 23:31:48 · 175 阅读 · 0 评论 -
LeetCode-Bit Manipulation & Array-169-E:多数元素(Majority Element)
文章目录思路解法1-Boyer-Moore投票算法思路leetcode官方题解解法1-Boyer-Moore投票算法本质上, Boyer-Moore 算法就是找 nums 的一个后缀 sufsuf ,其中 suf[0]suf[0] 就是后缀中的众数。我们维护一个计数器,如果遇到一个我们目前的候选众数,就将计数器加一,否则减一。只要计数器等于 0 ,我们就将 nums 中之前访问的数字全部 ...原创 2020-02-03 23:14:58 · 199 阅读 · 0 评论 -
LeetCode-Bit Manipulation-136-E:只出现一次的数字(Single Number)
文章目录思路解法1-异或解法2-数组解法3-哈希给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1思路(1)补充位运算的基础知识 :Java 位运算(移位、位与、或、异或、非)(2)关于异或在于:交换律:a ^ b ^ c...原创 2020-02-03 22:36:34 · 101 阅读 · 0 评论 -
LeetCode-Bit Manipulation&Array-78-M:子集(Subsets)
文章目录思路-wait解法给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路-wait解法...原创 2020-02-03 21:29:42 · 126 阅读 · 0 评论 -
LeetCode-Sort-350-E: 两个数组的交集 II(Intersection of Two Arrays II)
文章目录思路解法思路解法执行用时 :4 ms, 在所有 Java 提交中击败了65.76%的用户内存消耗 :36.6 MB, 在所有 Java 提交中击败了47.51%的用户class Solution { public int[] intersect(int[] nums1, int[] nums2) { if(nums1.length &...原创 2020-02-03 19:57:56 · 96 阅读 · 0 评论 -
LeetCode-Sort-324-M: 摆动排序 II(Wiggle Sort II )
文章目录思路-wait解法给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。思路-wait解法原创 2020-02-02 22:00:44 · 102 阅读 · 0 评论