1234567891011121314151617181920212223 |
- func wiggleMaxLength(nums []int) int {
- n := len(nums)
- if n <= 1 {
- return n
- }
- i, max, pre := 1, 1, 0
- for ; i < n; i++ { // Find the first slope
- diff := nums[i] - nums[i-1]
- if diff != 0 {
- pre = diff
- max++
- break
- }
- }
- for i = i + 1; i < n; i++ { // Count the change of dir
- diff := nums[i] - nums[i-1]
- if pre*diff < 0 {
- pre = diff
- max++
- }
- }
- return max
- }
|