leetcode
文章平均质量分 62
武大壮
这个作者很懒,什么都没留下…
展开
-
十四.二叉搜索树的范围和
二叉搜索树的范围和 题目描述: 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 输入:root = [10,5,15,3,7,null,18], low = 7, high = 15 输出:32 示例 2: 输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10 输出:23 提示: 树中节点数目在范围 [1, 2 * 10^4] 内 1 <= Node.val <=原创 2021-04-27 19:40:53 · 124 阅读 · 0 评论 -
十三. 在D天内送达包裹的能力
1011在D天内送达包裹的能力 题目描述: 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。 示例 1: 输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5 输出:15 解释: 船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示: 第 1 天:原创 2021-04-26 19:47:55 · 91 阅读 · 0 评论 -
十二.最小路径和
64.最小路径和 题目描述: 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。 示例 2: 输入:grid = [[1,2,3],[4,5,6]] 输出:12 m == grid.length n == grid[i].length 1 <= m, n原创 2021-04-24 18:25:46 · 75 阅读 · 0 评论 -
十一.解码方法
91.解码方法 题目描述: 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为: “AAJF” ,将消息分组为 (1 1 10 6) “KJF” ,将消息分组为 (11 10 6) 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射原创 2021-04-21 20:53:12 · 55 阅读 · 0 评论 -
十.只出现一次的数字
136.只出现一次的数字 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 题目分析: 不使用额外空间能叫笨比么… 笨比实现: class Solution { public int singleNumber(int[] nums) { Ma原创 2021-04-20 20:32:54 · 47 阅读 · 0 评论 -
九.移除元素
27.移除元素 题目描述: 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参作任原创 2021-04-19 19:39:55 · 53 阅读 · 0 评论 -
八.删除有序数组中的重复项
26.删除有序数组中的重复项 题目描述: 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = remove原创 2021-04-18 09:28:37 · 84 阅读 · 0 评论 -
六.打家劫舍II
213.打家劫舍II 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下 ,能够偷窃到的最高金额。 示例 1: 输入:nums = [2,3,2] 输出:3 解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 =原创 2021-04-15 20:42:28 · 74 阅读 · 0 评论 -
五.乘积最大子数组
152.乘积最大子数组 题目描述: 给你一个整数数组 nums 请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例一: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例二: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 题目分析: 第一眼看到这题我就觉得这太简单了, 不就是和求最大子序列和一样么,动态规划走起, 吭哧吭哧写了下面的代码, 结果可想而知…直接挂了原创 2021-04-14 23:04:17 · 186 阅读 · 0 评论 -
四.二叉搜索树节点最小距离
783.二叉搜索树节点最小距离 题目描述: 给你一个二叉搜索树的根节点 root ,返回树中任意两不同节点值之间的最小差值 。 输入:root = [4,2,6,1,3] 输出:1 输入:root = [1,0,48,null,null,12,49] 输出:1 题目分析: 其实一开始我是想过双重循环比较每一个元素和其他元素的差值的, 但是发现题目给的参数是一个头结点,而不是数组…(别骂了,别骂了,给笨比留点面子吧 T T). 正解是我们需要根据给定的BST根节点求出BST中序遍历的数组(升序数组), 任原创 2021-04-13 21:54:21 · 106 阅读 · 0 评论 -
三.最大数
179.最大数 题目描述: 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 输入:nums = [10,2] 输出:“210” 输入:nums = [3,30,34,5,9] 输出:“9534330” 输入:nums = [1] 输出:“1” 输入:nums = [10] 输出:“10” 1 <= nums.length <= 100 0 <= nums[i] <= 10^9原创 2021-04-12 22:31:47 · 56 阅读 · 0 评论 -
二.丑数II
264.丑数II 题目描述: 给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数就是只包含质因数 2、3 和 5 的正整数。 1 <= n <= 1690 题目分析: 1.定义数组dp, 其中dp[i] 表示第i个丑数,第n个丑数即为dp[n], 由于最小的丑数是 1,因此dp[1]=1。 如何得到其余的丑数呢?定义三个指针p2, p3,p5 , 表示下一个丑数是当前指针指向的丑数乘以对应的质因数。初始时,三个指针的值都是 11。 2.当 2<=i<=n 时,令 dp[i]原创 2021-04-11 14:32:44 · 66 阅读 · 0 评论 -
一.丑数
263.丑数 题目描述: 给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和 5 的正整数。 -2^31 <= n <= 2^31 - 1 题目分析: 输入范围是 -2^31 <= n <= 2^31- 1,我们只需要对输入进行分情况讨论即可: 如果 n 不是正整数(即小于等于 0):必然不是丑数,直接返回 false。 如果 n 是正整数:我们对 n 执行 2 3 5 的整除操作即可,直到 n原创 2021-04-11 12:23:47 · 167 阅读 · 0 评论