美文网首页动态规划动态规划
leetcode 376 三种方法+dp 摆动子

leetcode 376 三种方法+dp 摆动子

作者: Ariana不会哭 | 来源:发表于2019-01-07 03:11 被阅读0次
    图片.png
    • 方法1:将两两差保存在另外一个vector<int>中,dp:


      WeChat Image_20190106140515.jpg
    • 方法2:


      WeChat Image_20190106140521.jpg
    • 方法3:


      WeChat Image_20190106140525.jpg
    • code;

    //int wiggleMaxLength(vector<int>& nums) {
    //  if (nums.size() <= 1)
    //      return nums.size();
    //  vector<int> dp;
    //  for (int i = 1; i < nums.size();i++) {
    //      if (nums[i] - nums[i - 1] == 0)
    //          continue;
    //      dp.push_back(nums[i] - nums[i - 1]);
    //  }
    //  if (dp.size() == 0)
    //      return 1;
    //  bool flag = (dp[0] > 0) ? true : false;
    //  vector<int> ans(dp.size(),1);
    //  for (int i = 1; i < dp.size(); i++) {
    //      if ((dp[i]>0&& flag==true) ||(dp[i]<0&& flag==false))//if true-->符号相同
    //          ans[i] = ans[i - 1];
    //      else
    //          ans[i] = ans[i-1] + 1;
    //      flag= (dp[i] > 0) ? true : false;
    //  }
    //
    //  return ans.back() + 1;
    //}
    ////其中p[i]表示到i位置时首差值为正的摆动子序列的最大长度,
    ////q[i]表示到i位置时首差值为负的摆动子序列的最大长度
    //int wiggleMaxLength(vector<int>& nums) {
    //  if (nums.empty()) return 0;
    //  vector<int> p(nums.size(), 1);
    //  vector<int> q(nums.size(), 1);
    //  for (int i = 1; i < nums.size(); ++i) {
    //      for (int j = 0; j < i; ++j) {
    //          if (nums[i] > nums[j]) 
    //              p[i] = max(p[i], q[j] + 1);
    //          else if (nums[i] < nums[j]) 
    //              q[i] = max(q[i], p[j] + 1);
    //      }
    //  }
    //  return max(p.back(), q.back());
    //}
    //如果当前数字比前一个数字大,则p=q+1,
    //如果比前一个数字小,则q=p+1,最后取p和q中的较大值跟n比较,取较小的那个
    int wiggleMaxLength(vector<int>& nums) {
        int p = 1, q = 1, n = nums.size();
        for (int i = 1; i < n; ++i) {
            if (nums[i] > nums[i - 1]) 
                p = q + 1;
            else if (nums[i] < nums[i - 1]) 
                q = p + 1;
        }
        return min(n, max(p, q));
    }
    

    相关文章

      网友评论

        本文标题:leetcode 376 三种方法+dp 摆动子

        本文链接:https://www.haomeiwen.com/subject/lkkyrqtx.html