376.摆动序列(mediun)
计算出相邻元素之间的差值,若相邻非零差值的乘积小于零那么证明当前元素加入序列中能够保持当前的摆动序列规则。这样通过一次扫描即可得到总共的序列个数。
406.根据身高重建队列(medium)
通过贪心算法来解决问题,首先按照身高进行排序,考虑先放身高低的和身高较高的人。若从身高最高的人开始排序,那么相对位置就已经确定了,只需将剩下的人按照元组中的第二个元素进行插入即可。
765.情侣牵手👫(hard)
假设在第i和i+1位置上有[a,b]两个人,那么如果a为奇数b=a-1 || b为偶数a = b+1,那么ab为一对情侣,不用移动。如果b不是a的情侣,那么考虑最少的移动次数,我们交换b和a情侣c的位置即将i,i+1两个位置的情侣确定。将i位置的情侣定住,去寻找ta的情侣,即为最少次数的移动方法。
1353.最多可以参加的会议数目(medium)
考虑先参加结束最早的会议。
重叠问题
435.无重叠区间(medium)
452.用最少数量的箭引爆气球(medium)
这两题的思路一致,即按照区间的右侧进行判断,先按照右端点的大小排序,若下一个区间的左端点比当前右端点小,那么当前区间存在重叠,然后右端点不变继续向下遍历,若存在一个左端点大于当前右端点,则更新右端点。
覆盖问题
45.跳跃问题II(hard)
1024.视频拼接(medium)
1326.灌溉花园的最少水龙头数目(hard)
这三道问题其实具有相同的思路,以1326举例
从终点开始遍历每个点,从右向左更新每个点所能到达的最远位置,再次遍历这些点,选取最远的位置作为下次跳跃的点,如果遍历到由上次跳跃所到达的最远的点,那么判断该点所能到达的位置,如果在原地不动则不能覆盖,如果得到了更新那么就ans++,更新出发点重复上述过程。
招行笔试:木棍问题
参考:https://blog.csdn.net/martinue/article/details/43737891
网友评论