zoukankan      html  css  js  c++  java
  • 力扣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;
        }
    }
  • 相关阅读:
    UML_04_时序图
    UML_03_类图
    UML_02_概述
    UML_00_资源帖
    UML_01_画图工具
    SpringCloud_00_资源帖
    Idea_03_常用快捷键
    Idea_02_常用配置
    Idea_01_安装与激活
    Codeforces命令行工具
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15426856.html
Copyright © 2011-2022 走看看