leetcodeTop100
口木西成
沙坡村男子技术学院,java后台开发
展开
-
337打家劫舍3
题目描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。思路分析状态:树的每一个...原创 2020-03-26 13:29:14 · 129 阅读 · 0 评论 -
55跳跃游戏
题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: fals...原创 2020-03-26 13:28:03 · 95 阅读 · 0 评论 -
56合并区间
题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重...原创 2020-03-22 12:48:57 · 95 阅读 · 0 评论 -
17电话号码的字母组合
题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].思路分析本质上还是回溯的排列组合问题,区别是加了层循环和数组的提前处理。拿23举例,相当于先找到2的...原创 2020-03-22 12:46:29 · 96 阅读 · 0 评论 -
5最长回文子串
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路分析回文串问题的核心是,从中间向两边扩散来判断回文串。每次传入left和right两个指针,所指元素相同就left- -,right++,直到...原创 2020-03-12 15:10:01 · 116 阅读 · 0 评论 -
22括号生成
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路分析暴力解决:先生成所有序列,再对序列进行有效判断。回溯:dfs+剪枝。路径:已经加入的左右括号。选择列...原创 2020-03-11 11:23:49 · 107 阅读 · 0 评论 -
39组合总和
题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集...原创 2020-03-11 11:23:07 · 125 阅读 · 0 评论 -
236二叉树的最近公共节点
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释:...原创 2020-03-10 14:17:04 · 117 阅读 · 0 评论 -
79单词搜索
题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返...原创 2020-03-10 14:14:14 · 72 阅读 · 0 评论 -
42接雨水问题
题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路分析看题的第一反应就是无...原创 2020-03-08 12:40:35 · 347 阅读 · 0 评论 -
72编辑距离
题目描述给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> r...原创 2020-03-08 12:38:47 · 93 阅读 · 0 评论 -
76最小覆盖子串
题目描述给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。思路分析滑动窗口解法。建立两个哈希表,一个needs记录patter...原创 2020-03-07 15:09:50 · 94 阅读 · 0 评论 -
438找到字符串中所有字母异位词
题目描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: “cbaebabacd” p: “abc”输出:[0, 6]解释:起始索引等于 0...原创 2020-03-07 15:08:17 · 145 阅读 · 0 评论 -
3无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: ...原创 2020-03-07 15:07:36 · 128 阅读 · 0 评论 -
200岛屿数量(并查集未写)
题目描述给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3思路分析...原创 2020-03-04 13:03:20 · 163 阅读 · 0 评论 -
62不同路径
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?说明:m和n均不超过100.思路分析排列组合:纯粹从数学中解。机器人一定会走m+n-2步,从中挑出m-1步向下走,即C((m-1),(m+n-2))动态规划:状...原创 2020-03-04 11:38:14 · 107 阅读 · 0 评论 -
75颜色分类
题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排...原创 2020-03-03 12:59:53 · 170 阅读 · 0 评论 -
238除自身外数组的乘积
题目描述给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在&n...原创 2020-03-03 12:56:36 · 153 阅读 · 0 评论 -
287寻找重复数
题目描述给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的...原创 2020-03-03 12:55:30 · 116 阅读 · 0 评论 -
338比特位计数
题目描述给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间...原创 2020-03-02 11:40:24 · 169 阅读 · 0 评论 -
461汉明距离
题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2思路分析两个思路思路一:计算两个数不同的位数就是汉明距离。通过每个位和1与进行计算,进行无符号右移。思路二:将两数异或,剩下的就是不同的位数为1,计算1的位...原创 2020-03-02 11:32:47 · 167 阅读 · 0 评论 -
64最小路径和
题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路分析主体思路都是,下一个位置值=当前位置值+Math.min(往下,...原创 2020-03-02 11:31:44 · 116 阅读 · 0 评论 -
121买卖股票的最佳时机
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = ...原创 2020-03-01 21:06:05 · 148 阅读 · 0 评论 -
198打家劫舍
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。思路分析作为系列题的第一题,非常容易想到动规解法。状态:房子的序号选择:抢或不抢状态转移:抢,金...原创 2020-03-01 21:03:23 · 97 阅读 · 0 评论 -
136只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?思路分析最简单的用HashMap存,存在就删除,最后剩的就是想要的数不用辅助空间,就用异或的特性,一个数异或自己等于0,异或整个数组最后剩的就是所要数字。这题进阶为有两个只出现一次。104496036...原创 2020-03-01 21:02:39 · 147 阅读 · 0 评论 -
98验证二叉搜索树
题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路分析思路一:中序遍历递归做法。思路二:中序遍历非递归做法。用一个stack做辅助,先走到最左,由stack弹出结点与preData作比较,符合条件后访问右子树。力扣这...原创 2020-02-28 23:03:00 · 81 阅读 · 0 评论 -
96不同的二叉搜索树
题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?思路分析先观察,我们可以发现序列1-n,选i做根,则1-i为左子树,i-n为右子树,则i根的不同bst个数就是左右子树不同情况的乘积。eg. 1234,选2做根,左子树1,右子树34,相当于F(2,4)=O(1)*O(2)将这个发现拓展到全体,可以发现O(n)=∑O(i-1)*O(n-i)。递归求解复杂度高,...原创 2020-02-28 23:01:35 · 63 阅读 · 0 评论 -
94二叉树的中序遍历-迭代
题目描述给定一个二叉树,返回它的中序 遍历。使用迭代方法。思路分析用栈来辅助,先入栈,再访问。代码实现 public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list =new LinkedList<>(); if(root!=nu...原创 2020-02-12 14:32:44 · 72 阅读 · 0 评论 -
102二叉树的层次遍历
题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。思路分析没有思路,就是普通的层次遍历,用Queue做辅助队列。代码实现public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> queue = new LinkedList&...原创 2020-02-12 14:26:36 · 66 阅读 · 0 评论 -
543二叉树的直径
题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树1/ 2 3/ \4 5返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。思路分析最开始思路正确找子树的高度和的max,但坑人之处在于,最长的路...原创 2020-02-12 14:25:49 · 86 阅读 · 0 评论 -
448找到所有数组中消失的数字
题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路分析思...原创 2020-02-11 22:45:08 · 91 阅读 · 0 评论 -
538把二叉搜索树转换为累加数
题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树:5/ 2 13输出: 转换为累加树:18/ 20 13思路分析递归写法,以右中左的顺序遍历二叉树,将此遍历顺序的前一个节点值记录,与当前节点值相...原创 2020-02-11 22:40:54 · 89 阅读 · 0 评论 -
160相交链表
题目描述编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。思路分析题目假设链表无环。先判断是否相交,相交则根据两链表的长度差距,知道较长的链表,让长的链表先走len长度,之后两条一起走,相交点就是所求。代码实现...原创 2020-02-11 22:35:49 · 162 阅读 · 0 评论 -
169多数元素
题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路分析摩尔投票法。从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开...原创 2020-02-11 22:21:56 · 80 阅读 · 0 评论 -
617合并二叉树
题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。思路分析两个思路,都用递归做。第一个用额外的二叉树保存每次合并后产生的数据。第二个用原来的二叉树保存每次合并后产生的数据。代码实现...原创 2020-02-10 22:43:11 · 89 阅读 · 0 评论