20210426
1 | 题目:1011在D天内送达包裹的能力 |
1 | class Solution{ |
1 | 解题思路:采用二分查找的方法。先找到左边界,由于船舶的最低运载量必须大于等于货物中最大的值,这样才能保证能够将货物运送。右边界为船舶一天将所有的货物运算完的运载量。 |
20210425
1 | 题目:897递增顺序搜索树 |
1 | class Solution{ |
1 | 解题思路:采用二叉树的中序遍历,并修改其二叉树的结构。 |
20210424
1 | 题目:377组合总和IV |
1 | class Solution{ |
20210423
1 | 题目:368最大整除子集 |
1 | class Solution{ |
20210422
1 | 题目:363矩形区域不超过 K 的最大数值和 |
1 | class Solution { |
20210421
1 | 题目:91解码方法 |
1 | class Solution { |
1 | 解题思路:采用动态规划的方法。若第一个字符为'0'则直接输出0;不然从第二个字符开始遍历,若该字符不为'0',则它就可以被解码成一个字母。则我们可以写出状态转移方程:dp[i] += dp[i-1] |
20210404
1 | 题目:781森林中的兔子 |
1 | class Solution{ |
1 | 解题思路:两只相同颜色的兔子看到的其他同色兔子数必然是相同的。反之,若两只兔子看到的其他同色兔子数不同,那么这两只颜色也不同。因此,将answers中值相同的元素分为一组,对于每一组,计算出兔子的最少数量,然后后将所有的计算结果类加,就是最终答案。 |
20210405
1 | 题目:88合并两个有序数组 |
1 | class Solution{ |
1 | 解题思路:逆向双指针法!在nums1的后半部分是空的,可以直接覆盖不受影响。可将指针k设置为从后向前遍历,每次取值为i,j指针中较大的值;i指针和j指针分别从nums1的最大数值和nums2的最大数值开始;若当i指针<0时说明nums剩下的数都可以直接赋给k指针指向剩下的数组;若当j指针<0时,nums1中数组已经有序,合并结束。 |
20210406
1 | 题目:80删除有序数组中的重复项II |
1 | class Solution{ |
1 | 解题思路:给定的是有序数组,若元素相等则元素必会连续。我们使用双指针来解决本题,遍历数组中的每一个元素并检查其是否应该被保留。定义两个快慢指针i,j;慢指针i用来表名数组中的元素个数,快指针j用来检查元素是否应该加入新数组中。本题要求相同元素最多出现两次,所以我们应该检查上上个保留的元素nums[i-2]是否与当前检查的元素nums[j]相等。若nums[i-2]=nums[j]则,检查元素不应该放入新数组中,让其检查后续元素;若nums[i-2]!=nums[j],则将当前元素保存下来,慢指针向后移动。当快指针全部遍历完毕时结束。 |
20210407
1 | 题目:81搜索旋转排序数组II |
1 | class Solution{ |
1 | 我们使用二分查找法来解决该问题。但是二分查找可能会出现a[i]=a[mid]=a[j],此时无法判断左右两部分哪边是有序的。对于上述的问题我们可以当前二分区域的左边界+1,右边界-1,然后在新的分区上搜索。二分查找的思路可以详见33题。 |
20210408
1 | 题目:153寻找旋转排序数组中的最小值 |
1 | class Solution{ |
1 | 我们使用二分法来查找最小数,原数组为一个升序排序数组,经过旋转后,通过数组中间的数值将这个数组分为两个部分,其中必有一部分为有序数组。我们用中间值与数组最后的值做比较,若中间值严格小于最后的值,那么数组的最小值应该在[左边界,中间值所在索引]之间,否则数组的最小值应该在[中间值索引+1,有边界]之间。当区间长度为1时,停止二分查找。 |
20210409
1 | 题目:154寻找旋转排序数组中的最小值II |
1 | class Solution{ |
1 | 我们使用二分查找。该数组经过旋转后,从中间切开,可以将数组分为两部分。由于数组中可能存在相等的数即nums[左边界]=nums[mid]=nums[有边界],我们就让左边界+1,右边界-1.我们将比较nums[中间索引]和nums[有边界索引],若nums[mid]严格小于nums[右边界]则让有边界赋值为mid,否则将左边界赋值为mid+1。 |
20210410
1 | 题目:263丑数 |
1 | class Solution{ |
1 | 采用递归的方法。若n能被2,3,5整除,将其先整除再继续迭代。递归的出口是若n==1则为丑数,否则不为丑数。 |
20210411
1 | 题目:264丑数II |
1 | class Solution{ |
1 | 采用三指针法,首先最小的丑数是1,再res中直接放入即res[1]=1;再通过三个指针来得到下一个丑数,让当前的丑数值乘以2,3,5得到对应的三个数,然后取其中最小的作为下一个丑数。 |
20210412
1 | 题目:179最大数 |
1 | class Solution { |
20210413
1 | 题目:783二叉搜索树节点最小距离 |
1 | /** |
1 | 题目:208实现Trie |
1 | class Trie { |