LeetCode
每日一题打卡
金华市的小梁
这个作者很懒,什么都没留下…
展开
-
4月11号打卡
2021.4.11 丑数Ⅱ题目描述给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。思路分析代码 public int nthUglyNumber(int n) { int[] dp = new int[n]; dp[0] = 1; int num2,num3,num5,p2 = 0,p3 = 0,p5 = 0; for(int i = 1;i < n;i++)转载 2021-04-11 16:28:04 · 62 阅读 · 0 评论 -
4月10号打卡
丑数题目描述给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。思路丑数只包含质因数2 3 5,即可以写成2x * 3 y * 5 z的形式,x y z都大于等于0,只需要把其中的 2 3 5除尽看看是否等于1就可以了。代码 public boolean isUgly(int n) { if(n <= 0) return false; wh原创 2021-04-10 11:16:15 · 71 阅读 · 0 评论 -
4月9号打卡
2021.4.9 154. 寻找旋转排序数组中的最小值 II题目描述给你一个可能存在 重复 元素值的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。思路今天依旧采用二分法,但值得注意的是当nums[mid] >= nums[left] 或 nums[mid] <= nums[right] 时都不能确定哪边是有序的。但可以知道,当nums[mid] > nums[left]时,最小元素一定不在左边,左边有序。当nums[m原创 2021-04-09 16:23:24 · 62 阅读 · 0 评论 -
4月8号打卡
2021.4.8 寻找旋转排序数组中的最小值题目描述已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。思路一种解法是直接遍历,时间复杂度是O(n),但本题可以采用二分法,虽然数组进行了原创 2021-04-08 14:12:17 · 52 阅读 · 0 评论 -
4月7号打卡
2021.4.7 搜索旋转排序数组 II题目描述给定一个有序数组,但数组从 k 处旋转,将 k 以后的数字放在数组的前面,例如:1 2 3 4 5 6 --> 4 5 6 1 2 3 。数值可以重复给出一个查询算法,返回boolean。代码实现首先考虑不存在重复数值的情况下的二分法,旋转以后从中间分开有两种状态,左边有序右边无序或者右边有序左边无序,根据这两种状态我们可以分情况使用二分查找。判断当左边有序且查找的值处于左边时,向左边二分,否则向右边查找。而当右边有序时判断是否在右边,如果不是原创 2021-04-07 20:59:29 · 68 阅读 · 0 评论 -
4月6号打卡
2021.4.6 删除有序数组中的重复项 II题目描述给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝原创 2021-04-06 16:43:30 · 46 阅读 · 0 评论 -
4月5号打卡
2021.4.5 合并两个有序数组题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例原创 2021-04-05 12:25:06 · 45 阅读 · 0 评论 -
4月4号打卡
2021.4.4 森林中的兔子题目描述森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 “1” 的兔子可能有相同的颜色,设为红色。之后回答了 “2” 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 “2” 的兔子为蓝色。此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。因此原创 2021-04-04 11:17:18 · 85 阅读 · 0 评论 -
4月3号打卡
2021.4.3 最长公共子序列题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 =原创 2021-04-03 23:08:04 · 51 阅读 · 0 评论 -
4月2号打卡
2021.4.2 直方图的水量题目描述给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路我采用的是暴力解法,即遍历每一个"直立方",讲其能装的单位水加起来,得出结果,每个立方能装的水和它的左右两边的最大值有关,需要求出两边的最原创 2021-04-02 16:16:18 · 78 阅读 · 0 评论 -
4月1号打卡
2021.4.1 笨阶乘题目描述通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)。例如,clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1。然而,这些运算仍原创 2021-04-01 19:54:37 · 156 阅读 · 0 评论