Leetcode 超难题目 Hard

动态规划

2945. 找到最大非递减数组的长度 (难度分2943,“超难”)

这道题很有可能是LC主站(LCP除外)新的天花板,之所以难度分没有超过1719题,是因为双周赛样本量本身不多,而这题有一定的“猜结论”。某个LC积分2900+的大佬认为,即使数据范围只有1000,这也是一道相当难的题目。因为记录dp[j]为最优时,nums[j]的最小值(注意nums[j]很可能是被改过的),这样的DP本身就很难想到。而同时保证dp[j]最大nums[j]最小是否就更利于后面的转移,这点非常难证明。这个题的数据范围并不是1000,因此需要单调数据结构优化来保证复杂度合理。

2809. 使数组和小于等于 x 的最少时间 (难度分2978,“超难”)

思路也是非常难想的,只是代码很好写。很显然重复操作相同下标一定是血亏的,而根据排序不等式,如果选了一些下标j,则对应nums2元素较大的j应该尽量晚操作。因此正解是转化为二维DP,状态定义为前i个数(注意是按nums2从小到大排好的前i个)中操作j个数,能减少的数组和。然后根据每多操作一次总和增加sum(nums2),遍历DP数组找答案。注意这道题二分猜答案是错误的ÿ

你可能感兴趣的:(算法精选,leetcode,算法,职场和发展)