1011、在D天内送达包裹的能力
给定一系列包裹的重量,让我们按照顺序把包裹分成D份,放船上运走。求船的最低的运载量x。
思路:
很多在题目中有最少最低等的描述,很可能用二分法就能解决,就比如这道题,船的最低运载量的最小值和最大值都是清楚的,最小值就是最大包裹的重量(因为比这个小,有的包裹就运不走了),最大值是所有包裹的重量之和(所有的一次能运走,再大没必要)。二分法是否适用需要有一个单调性的判定,这里是,存在一个运载量的下限Xans,当X>=Xans船能运走这批货,当X<Xans时船就不能按时运走。
二分法确定之后接下来就是判定某个x能不能运,这里可以直接贪心操作。
938、二叉搜索树的范围和
思路:
给定一个二叉树和一个上下界,返回这颗二叉树中节点的值位于这上下界中的和。
思路:
有2个,一个是直接中序遍历,一个递归处理。
这两个思路的最坏时间复杂度都是O(n),n是节点的数目
939、最小面积矩阵
给定一系列坐标,确定由这些点组成的最小的矩形面积
思路:
我们只需要2个坐标就能唯一的确定一个矩形,因此我们可以直接双重for循环暴力解答。
940、不同的子序列||
给定一个字符串S,计算S的不同非空子序列的个数。
思路:
动态规划,把这个问题分解为26个不同字母结尾的非空子序列的数量的和的问题。定义数组保存分别以26个字母结尾的非空子序列的数量。然后遍历字符串中的每一个字母,那数组中以这个字母结尾的子序列的数量则为在这之前所有字母结尾的总和再加上1.
941、有效的山脉数组
思路:
从左向右找到最高峰,从右向左找到最高峰,判断是否是同一个位置
942、增减字符串匹配
思路 :
贪心处理,用两个变量分别确定上下界,把I所对应值设置为下界,把D所对应的值设置为上界,然后下界上移上界下移。
944、删列造序
思路:
简单
633、平方数之和
给定一个非负整数,判断这个数是否是2个整数的平方和
思路:
和上面的939题类似,这里有2个未知数,但是这2个未知数满足一定的关系,那就相当于只有一个未知数,这个未知数的上下界我们也知道,所以可以直接暴力解答。
645、错误的集合
集合包含了1-n的整数,但丢失了一个数,重复了一个数(就是一个数覆盖了另外一个),找出这2个数
思路:
不对数组进行操作,而是对数组的值进行处理。
137、只出现一次的数组||
给定数组,一个元素只出现一次其他元素出现3次,找到出现一次的这个元素
思路:
同645题一样,不对数组操作,只对数组的值进行处理。
1108、IP地址无效化
思路:
简单替换
1109、航班预订统计
思路:
差分和问题,用一个数组记录变化,再对这个数组计算前缀和
1110、删点成林
删除二叉树上的一些节点,让之变成森林
思路:
简单后序遍历处理
690、员工的重要性
思路:
简单递归
693、交替位二进制数
思路:
注意int转为为二进制函数bin
697、数组的度
思路:
用两个hash表表示数组中某个数字第一次出现和最后一次出现的位置,然后找到频数的最大值的那个数,用两个hash表的值相减就行
696、计数二进制子串
思路:
先统计连续的0和1分别有多少个,如:111100011000,得到4323;在4323中的任意相邻两个数字,取小的一个加起来,就是3+2+2 = 7。
这里解答中的把01替换为0 1的解法漂亮
456、503 下一个更大元素
思路:
单调栈
554、砖墙
思路:
这个关键在于发现能用前缀和表示是否对齐
945、使数组唯一的最小增量
思路:
贪心的思路,能够直接找到这个最小增量,先增序排序,然后需要元素没之前元素大的,把它改成之前的元素加一,把这个操作记录到ans中。
1849、将字符串拆分为递减的连续值
思路:
简单dfs
1848、到目标元素的最小距离
思路:
简单题