376. 摆动序列

贪心

class Solution {
    public int wiggleMaxLength(int[] nums) {

        int prev = 0;
        int cur = 0;
        int count = 1;

        /**
         * 遍历时记录前一个差值和当前差值,如果差值正负交替,总数就加1,然后更新前一个差值
         * 注意第一次的prev == 0,所以if语句中需要等于0
         */
        for (int i = 1; i < nums.length; i++) {

            cur = nums[i] - nums[i - 1];

            if ((prev <= 0 && cur > 0) || (prev >= 0 && cur < 0)){

                count++;
                prev = cur;
            }
        }

        return count;
    }
}

/**
 * 时间复杂度 O(nlogn)
 * 空间复杂度 O(n)
 */

https://leetcode-cn.com/problems/wiggle-subsequence/

posted @ 2022-02-26 19:59  振袖秋枫问红叶  阅读(25)  评论(0)    收藏  举报