zoukankan      html  css  js  c++  java
  • LeetCode376. 摆动序列

    class Solution {
        /**
         *  最优子结构:在i处递减的摆动序列的总长度,就是在i之前以递增结尾的最长摆动序列长度 +1;
         *    状态定义:up[i]   表示以前 i 个元素中的某一个为结尾的最长的 上升摆动序列 的长度
         *             down[i] 表示以前 i 个元素中的某一个为结尾的最长的 下降摆动序列 的长度
         */
        public int wiggleMaxLength(int[] nums) {
            /**
             *  方法1:时间复杂度:O(n)   空间复杂度:O(n)
             */
            /*
            int len = nums.length;
            // 规定少于两个元素的序列也是摆动序列
            if (len < 2) {
                return len;
            }
            int[] up = new int[len];
            int[] down = new int[len];
            up[0] = down[0] = 1;
            for (int i = 1; i < len; i++) {
                if (nums[i] > nums[i-1]) {
                    up[i] = down[i-1] + 1;
                    down[i] = down[i-1];
                }else if (nums[i] < nums[i-1]) {
                    down[i] = up[i-1] + 1;
                    up[i] = up[i-1];
                }else { // 如果相等,都不变
                    up[i] = up[i-1];
                    down[i] = down[i-1];
                }
            }
            return Math.max(up[len-1], down[len-1]);
            */
            /**
             * 方法2:空间压缩。  时间复杂度:O(n)   空间复杂度:O(1)
             */
            int len = nums.length;
            if (len < 2) {
                return len;
            }
            int up = 1, down = 1;
            for (int i = 1; i < len; i++) {
                if (nums[i] > nums[i-1]) {
                    up = down + 1;
                }else if (nums[i] < nums[i-1]) {
                    down = up + 1;
                }
            }
            return Math.max(up, down);
        }
    }
  • 相关阅读:
    响应式布局
    CSS3过渡
    CSS3背景
    CSS渐变
    CSS3选择器
    CSS3
    自定义指令
    键盘修饰符
    过滤器
    v-if与v-show区别
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14217180.html
Copyright © 2011-2022 走看看