第376题---Wiggle Subsequence

  • 题意描述

    • 给定一个数组,求摆动子序列;摆动子序列是指两个相邻的数之差,交替正负
  • 思路

    • 统计子序列长度变量,控制摆动方向变量,前一个元素变量;如果size<2直接返回长度;判断前两个方向,length++,改变方向;如果方向相同,则prev复制,如果不同,则length++,改变方向(注意两个元素值相同的情况)
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    class Solution {
    public:
    int wiggleMaxLength(vector<int>& nums) {
    int size = nums.size();
    if (size < 2)
    return size;
    bool increase = nums[1] > nums[0];
    int prev = nums[0];
    int maxlength = 1;
    for(int i = 1; i < size; ++i) {
    if(increase) {
    if(nums[i] > prev) {
    maxlength ++;
    increase = !increase;
    }
    } else {
    if(nums[i] < prev) {
    maxlength ++;
    increase = !increase;
    }
    }
    prev = nums[i];
    }
    return maxlength;
    }
    };
坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章