376. 摆动序列
随想录文字讲解:代码随想录 (programmercarl.com)
随想录视频讲解:贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列_哔哩哔哩_bilibili
状态:没做出来
自己想的不知道处理局部的思路在哪。
对于局部的处理在于对单调序列的处理,如果一个元素的前元素差和后元素差满足分别大于和小于0就满足摆动条件。否则就继续循环。
对平坡的处理:对平坡最后一个节点进行判断,之前的平坡节点都默认删掉。所以判断符合的条件为
if((prediff>=0&&curdiff<0)||(prediff<=0&&curdiff>0))
对第一个节点的处理可以不用特殊化,视为其前面有一个相同节点,即初始化前元素差为0时第一个节点自动符合条件。
但是这种判断条件会使插在单调坡中的平坡被误判成功,所以只有在判断成功时才有把后差和赋值给前差和的操作,因为单调操作时前差和一直都满足同一个条件,不需要再赋值。
53. 最大子序和
随想录文字讲解:代码随想录 (programmercarl.com)
随想录视频讲解:
状态:没做出来
贪心的做法在于当子序和为负数后直接抛弃,从下一个新数开始算,同时别忘了对最大值的更新。