LeetCode解题笔记
JohnLiu_
这个作者很懒,什么都没留下…
展开
-
LeetCode解题笔记 49 —— 403. 字典序排数
题目一只青蛙想要过河。 假定河流被等分为x个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示),请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。开始时,青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。如果青蛙上一步跳跃了...原创 2019-06-18 11:20:21 · 343 阅读 · 0 评论 -
LeetCode解题笔记 31 —— 133. 克隆图
题目给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值val(Int) 和其邻居的列表(list[Node])。示例:输入:{"$id":"1","neighbors":[{"$id":"2","neighbors":[{"$ref":"1"},{"$id":"3","neighbors":[{"$ref":"2"},{"$id":"4","...原创 2019-04-25 18:01:30 · 312 阅读 · 0 评论 -
LeetCode解题笔记 34 —— 188. 买卖股票的最佳时机 IV
题目给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔...原创 2019-04-30 15:05:02 · 275 阅读 · 0 评论 -
LeetCode解题笔记 33 —— 165. 比较版本号
题目比较两个版本号version1和version2。如果version1>version2返回1,如果version1<version2返回-1, 除此之外返回0。你可以假设版本字符串非空,并且只包含数字和.字符。.字符不代表小数点,而是用于分隔数字序列。例如,2.5不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版...原创 2019-04-30 15:02:15 · 195 阅读 · 0 评论 -
LeetCode解题笔记 39 —— 239. 滑动窗口最大值
题目给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口k内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值------...原创 2019-05-08 11:25:46 · 168 阅读 · 0 评论 -
LeetCode解题笔记 38 —— 233.数字 1 的个数
题目给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。解法class Solution { //以下注释以n=5683为例 public int countDigitOne(int n) { if(n&l...原创 2019-05-08 09:40:22 · 495 阅读 · 0 评论 -
LeetCode解题笔记 28 —— 105.从前序与中序遍历序列构造二叉树
题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解法/** * Definition for a...原创 2019-04-19 15:21:11 · 126 阅读 · 0 评论 -
LeetCode解题笔记 27 —— 102. 二叉树的层次遍历
题目给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法/** * Definition for ...原创 2019-04-19 14:10:30 · 159 阅读 · 0 评论 -
LeetCode解题笔记 26 —— 100. 相同的树
题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2019-04-19 11:13:56 · 146 阅读 · 0 评论 -
LeetCode解题笔记 25 —— 98. 验证二叉搜索树
题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ ...原创 2019-04-18 15:55:27 · 260 阅读 · 0 评论 -
LeetCode解题笔记 30 —— 124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 2...原创 2019-04-23 11:49:28 · 225 阅读 · 0 评论 -
LeetCode解题笔记 40 —— 273. 整数转换英文表示
题目将非负整数转换为其对应的英文表示。可以保证给定输入小于2^31- 1 。示例 1:输入: 123输出: "One Hundred Twenty Three"示例 2:输入: 12345输出: "Twelve Thousand Three Hundred Forty Five"示例 3:输入: 1234567输出: "One Million Two ...原创 2019-05-09 09:40:57 · 376 阅读 · 0 评论 -
LeetCode解题笔记 35 —— 213. 打家劫舍 II
题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例1:输入: [2,3,2]输出: 3...原创 2019-05-06 15:59:24 · 144 阅读 · 0 评论 -
LeetCode解题笔记 48 —— 386. 字典序排数
题目给定一个整数n, 返回从1到n的字典顺序。例如,给定n=1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据n小于等于5,000,000。解法class Solution { public List<Integer> lexicalOrde...原创 2019-05-29 14:56:31 · 190 阅读 · 0 评论 -
LeetCode解题笔记 47 —— 373. 查找和最小的K对数字
题目给定两个以升序排列的整形数组nums1和nums2, 以及一个整数k。定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自nums2。找到和最小的 k 对数字(u1,v1), (u2,v2) ... (uk,vk)。示例 1:输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,2],[1,4...原创 2019-05-23 13:36:32 · 736 阅读 · 0 评论 -
LeetCode解题笔记 43 —— 327. 区间和的个数
题目给定一个整数数组nums,返回区间和在[lower, upper]之间的个数,包含lower和upper。区间和S(i, j)表示在nums中,位置从i到j的元素之和,包含i和j(i≤j)。说明:最直观的算法复杂度是O(n2) ,请在此基础上优化你的算法。示例:输入: nums = [-2,5,-1], lower = -2, u...原创 2019-05-17 15:26:02 · 616 阅读 · 0 评论 -
LeetCode解题笔记 46 —— 368. 最大整除子集
题目给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si% Sj= 0 或 Sj% Si= 0。如果有多个目标子集,返回其中任何一个均可。示例 1:输入: [1,2,3]输出: [1,2] (当然, [1,3] 也正确)示例 2:输入: [1,2,4,8]输出: [1,2,4,8]解法...原创 2019-05-22 10:00:51 · 351 阅读 · 0 评论 -
LeetCode解题笔记 45 —— 352. 将数据流变为多个不相交区间
题目给定一个非负整数的数据流输入 a1,a2,…,an,…,将到目前为止看到的数字总结为不相交的区间列表。例如,假设数据流中的整数为 1,3,7,2,6,…,每次的总结为:[1, 1][1, 1], [3, 3][1, 1], [3, 3], [7, 7][1, 3], [7, 7][1, 3], [6, 7]进阶:如果有很多合并,并且与数据流的大小相比,不相交...原创 2019-05-21 13:43:10 · 352 阅读 · 0 评论 -
LeetCode解题笔记 44 —— 338. 比特位计数
题目给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]解法class Solution { public int[] countBits(int num) { ...原创 2019-05-20 17:41:51 · 309 阅读 · 0 评论 -
LeetCode解题笔记 42 —— 297. 二叉树的序列化与反序列化
题目序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树...原创 2019-05-10 10:16:47 · 221 阅读 · 0 评论 -
LeetCode解题笔记 37 —— 224. 基本计算器
题目实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号(,右括号),加号+,减号-,非负整数和空格。示例 1:输入: "1 + 1"输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23说明:你可以假设所给定的表达式都是有...原创 2019-05-07 15:20:11 · 618 阅读 · 0 评论 -
LeetCode解题笔记 41 —— 279. 完全平方数
题目给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解法class Solution { public ...原创 2019-05-09 13:47:25 · 225 阅读 · 0 评论 -
LeetCode解题笔记 36 —— 214. 最短回文串
题目给定一个字符串s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd"解法class Solution { public String shortestPalindrome(Strin...原创 2019-05-06 17:11:19 · 445 阅读 · 1 评论 -
LeetCode解题笔记 24 —— 95. 不同的二叉搜索树 II
题目给定一个整数n,生成所有由 1 ...n为节点所组成的二叉搜索树。【二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。】示例:输入...原创 2019-04-18 15:00:49 · 251 阅读 · 0 评论 -
LeetCode解题笔记 29 —— 123. 买卖股票的最佳时机 III
题目给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交...原创 2019-04-23 10:36:03 · 229 阅读 · 0 评论 -
LeetCode解题笔记 23 —— 94. 二叉树的中序遍历
题目给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]解法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left...原创 2019-04-18 10:41:02 · 167 阅读 · 0 评论 -
LeetCode解题笔记 12 —— 51. N皇后
问题n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...原创 2019-04-08 11:50:37 · 189 阅读 · 0 评论 -
LeetCode解题笔记 11 —— 49.字母异位词分组
题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。解法cla...原创 2019-04-08 10:13:27 · 185 阅读 · 0 评论 -
LeetCode解题笔记 10 —— 48. 旋转图像
题目给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9...原创 2019-04-08 09:24:24 · 128 阅读 · 0 评论 -
LeetCode解题笔记 6 —— 36.有效的数独
题目判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3",".","...原创 2019-03-28 17:55:34 · 175 阅读 · 0 评论 -
LeetCode解题笔记 5 —— 20.有效的括号
题目给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: fa...原创 2019-03-28 10:00:02 · 151 阅读 · 0 评论 -
LeetCode解题笔记 7 —— 37.解数独
问题编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字1-9和字符'.'。 你可以假设给定的数独只...原创 2019-04-01 16:52:56 · 244 阅读 · 0 评论 -
LeetCode解题笔记 4 —— 6. Z 字形变换
问题将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行...原创 2019-03-27 11:49:02 · 185 阅读 · 0 评论 -
LeetCode解题笔记 3 —— 5.最长回文子串
tips:回文的意思是正着念和倒着念一样,如:上海自来水来自海上问题给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解法暴力解法:class Solution { pu...原创 2019-03-27 11:28:52 · 217 阅读 · 0 评论 -
LeetCode解题笔记 2 —— 3.无重复字符的最长子串
题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复...原创 2019-03-27 10:22:19 · 152 阅读 · 0 评论 -
LeetCode解题笔记 1 —— 2.两数相加
题目给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-03-27 10:17:37 · 163 阅读 · 0 评论 -
LeetCode解题笔记 13 —— 54. 螺旋矩阵
题目给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12...原创 2019-04-08 15:12:13 · 183 阅读 · 0 评论 -
LeetCode解题笔记 14 —— 59. 螺旋矩阵 II
题目给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解法class Solution { public int[][] generateMatrix(int n) { int[][] nu...原创 2019-04-08 18:09:27 · 194 阅读 · 0 评论 -
LeetCode解题笔记 22 —— 93. 复原IP地址
题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]解法class Solution { public List<String> restoreIpAddresses(String s) { ...原创 2019-04-18 10:23:29 · 1095 阅读 · 0 评论 -
LeetCode解题笔记 18 —— 78. 子集
题目给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解法class Solution { public List<...原创 2019-04-15 11:59:34 · 172 阅读 · 0 评论