• 力扣376题(摆动序列)


    376、摆动序列

    基本思想:

    贪心算法

    具体实现:

    preDiff存放上一次的差值

    curDiff存放当前的差值

    只要一正一负,执行count + +

    但是preDiff初始化为0,不管怎样比都不会出现一正一负,

    所以比较条件为

    if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0))

    比较preDiff时需要带等号

    一个数组长度为2 ,

    举例,[2,5],摆动序列的最长子序列个数应该返回2

    count初始化为1

    此时curDiff > 0 && preDiff <= 0,

    count++ ,

    最后得到的count就是2

    [4,5,5,4]

    返回3,

    代码:

    class Solution {
        public int wiggleMaxLength(int[] nums) {
            if (nums == null || nums.length <= 1) {
                return nums.length;
            }
            //当前差值
            int curDiff = 0;
            //上一个差值
            int preDiff = 0;
            int count = 1;
            for (int i = 1; i < nums.length; i++) {
                //得到当前差值
                curDiff = nums[i] - nums[i - 1];
                //如果当前差值和上一个差值为一正一负
                //等于0的情况表示初始时的preDiff
                if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {
                    count++;
                    preDiff = curDiff;
                }
            }
            return count;
        }
    }
  • 相关阅读:
    KMP算法精髓
    习题
    JavaScript function函数种类介绍
    街景地图 API
    电脑网卡
    框架的设计之IRepository还是IRepository<T>
    顺序线性表
    hdu4284之字典树
    pt-table-checksum
    C++中输入输出流及文件流操作笔记
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15426856.html
Copyright © 2020-2023  润新知