【题目】

A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with fewer than two elements is trivially a wiggle sequence.

For example, [1,7,4,9,2,5] is a wiggle sequence because the differences (6,-3,5,-7,3) are alternately positive and negative. In contrast, [1,4,7,2,5] and [1,7,4,5,5] are not wiggle sequences, the first because its first two differences are positive and the second because its last difference is zero.

Given a sequence of integers, return the length of the longest subsequence that is a wiggle sequence. A subsequence is obtained by deleting some number of elements (eventually, also zero) from the original sequence, leaving the remaining elements in their original order.

【思路】

DP/贪心都可以,贪心更简单。

核心比较A[i+2]-A[i+1]和A[i+1]-A[i]是否异号,是则cnt++,否则i++循环。

两个指针和一个循环,特殊情况只有两个元素的数组单独讨论。

才发现可以插入代码!!好看多了……!

【代码】

class Solution {public int wiggleMaxLength(int[] nums) {if (nums.length<2)return nums.length;int p1=nums[1]-nums[0];int cnt=p1!=0?2:1;for(int i=2;i<nums.length;i++){int p2=nums[i]-nums[i-1];if((p1<=0&&p2>0)||(p1>=0&&p2<0)){p1=p2;cnt++;}}return cnt;}
}

【举例】

Example 1:

Input: [1,7,4,9,2,5]
Output: 6
Explanation: The entire sequence is a wiggle sequence.

Example 2:

Input: [1,17,5,10,13,15,10,5,16,8]
Output: 7
Explanation: There are several subsequences that achieve this length. One is [1,17,10,13,10,16,8].

Example 3:

Input: [1,2,3,4,5,6,7,8,9]
Output: 2

转载于:https://www.cnblogs.com/inku/p/9935839.html

[Leetcode 376]摇摆序列 Wiggle Subsequence相关推荐

  1. leetcode - 376. 摆动序列

    376. 摆动序列 -------------------------------------------- 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在 ...

  2. LeetCode 376. 摆动序列 中等难度

    376. 摆动序列 题目: 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如: [1,7,4,9 ...

  3. LeetCode 376. 摆动序列(贪心 动态规划)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个 ...

  4. Leetcode 376. 摆动序列 解题思路及C++实现

    解题思路: 使用贪心算法的思想. 在例子 [1,17,5,10,13,15,10,5,16,8]中,[1, 17].[17, 5]这前面的两个序列就直接都选择了,没有问题,对于后面[5, 10, 13 ...

  5. leetcode 376. 摆动序列 思考分析

    目录 题目 思路分析 代码 总结 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1 ...

  6. leetcode 376. 摆动序列(dp)

    如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动序列, ...

  7. [leetcode]376. 摆动序列

    原文:https://leetcode-cn.com/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode/ 给定一个整数序 ...

  8. 贪心:Wiggle Subsequence 摇摆序列

    一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为 摇摆序列.一个小于2个元素的序列直接为摇摆序列.给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度: 输入[1,1 ...

  9. 376 Wiggle Subsequence 贪心解法以及证明

    376. Wiggle Subsequence 题目理解 给定一个数组,相邻两个数计算差值.差值排成的序列是正负相间的,那这个数组就是一个wiggle 数组.例如数组[1,7,4,9,2,5],差值序 ...

最新文章

  1. android系统release签名
  2. Puppet dashboard安装
  3. 提示JS错误:WebForm_PostBackOptions 未定义
  4. 循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码
  5. html列表按时间排序代码_按字母顺序排序的列表
  6. caffe SigmoidCrossEntropyLossLayer
  7. 第三篇: UpdatePanel 控件示例
  8. MyEclipse:新导入一个项目时中文乱码
  9. 【React】JSX
  10. 孙鑫VC学习笔记:第八讲 逃跑按钮的巧妙实现和MFC中指针的获取
  11. BScroll warn 】EventEmitter has used unknown event type: “pullingUp“解决方法:看bs文档
  12. Unity如何免费持续获取卫星云图、雷达云图等天气数据图片,制作动态天气应用
  13. linux中ping命令停不下来解决方案
  14. k8s - service
  15. 台达变频器vfb—d参数表_台达DPS
  16. kafka connector 使用总结以及自定义connector开发
  17. 国内银行应用软件项目外包模式探讨
  18. android原生输入法皮肤,天了噜搜狗输入法安卓版皮肤竟然会说话
  19. 带反义词的成语-含有反义词的成语
  20. 关于facebook登录出现的问题

热门文章

  1. 【机器视觉学习笔记】双线性插值实现图片任意角度旋转(C++)
  2. slf4j的简单用法以及与log4j的区别
  3. Boost - 序列化 (Serialization)
  4. python下设置urllib连接超时
  5. [react-router] React-Router 3和React-Router 4有什么变化?添加了什么好的特性?
  6. 前端学习(3041):vue+element今日头条管理-控制用户的访问权限
  7. [html] 如果一个标签元素同时出现两个class属性,两个class都会生效吗?为什么?
  8. [html] html标签中的lang属性有什么作用?
  9. [vue] 说说你对vue的错误处理的了解?
  10. 前端学习(2811):小程序学习之学习目录