码迷,mamicode.com
首页 > 其他好文 > 详细

【wiggle-subsequence】leetcode-376

时间:2016-08-10 20:56:48      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

链接:https://leetcode.com/problems/wiggle-subsequence/

解题思路:其实只需要比较a[n+1]-a[n]和a[n]-a[n-1]的正负性即可,定义变量flag记录上一次的正负性,current记录上一个的值,count记录满足要求的总和,于是有以下代码:

class Solution(object):
    def wiggleMaxLength(self, nums):
        """ 
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        current = nums[0]
        count = 1 
        flag = None
        for num in nums[1:]:
            if flag == None:
                if num == current:
                    continue
                if num < current:
                    flag = False
                else:
                    flag = True
                count += 1
                current = num
            elif flag == True:
                if num < current:
                    flag = False
                    count += 1
                current = num
            else:
                if num > current:
                    flag = True
                    count += 1
                current = num
        return count

有几点需要注意的是:

1,初始情况是先向上走还是先向下走是未定的,不论哪种情况,都要将计数器+1

2,初始情况有可能是连续相等的值,此时情况仍未定

 

【wiggle-subsequence】leetcode-376

标签:

原文地址:http://www.cnblogs.com/miyisia/p/5758110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!