leetcode 485 python

来源:互联网 发布:linux多线程编程 编辑:程序博客网 时间:2024/06/07 23:51

Given a binary array, find the maximum number of consecutive 1s in this array.

Example 1:

Input: [1,1,0,1,1,1]Output: 3Explanation: The first two digits or the last three digits are consecutive 1s.    The maximum number of consecutive 1s is 3.

Note:

  • The input array will only contain 0 and 1.
  • The length of input array is a positive integer and will not exceed 10,000
class Solution(object):    def findMaxConsecutiveOnes(self, nums):        """        :type nums: List[int]        :rtype: int        """        answer = 0        count = 0        s = 0        a = len(nums)        print (a)               for x in range(1,a+1):            if  s != a-1 and nums[s] ==1 :                count = count + 1                print (count)            elif nums[s] ==0:                if answer < count:                    answer = count                count = 0            elif s == a-1 and nums[s] ==1:                count = count + 1                if answer < count:                    answer = count                count = 0                           s = s + 1                    return answer

第一想法就是动态规划。找到目前的连续的串和过去连续的串的最大值,设为曾经最大的串。

故,设置count代表现在连续的串,anwer为过去连续的值得最大值。转移方程就是求两者的最大值。

有个技巧,就是判断count和answer最大值得时候,注意到count要包括末尾的连续的1的个数,而不仅仅是遇到0停止。所以设置的是循环变量到了nums.length,超出了数组的clength,这样的时候就使停止的判断有两个,遇到0和超出数组长度。

class Solution(object):    def findMaxConsecutiveOnes(self, nums):        """        :type nums: List[int]        :rtype: int        """        cnt = 0        ans = 0        for num in nums:            if num == 1:                cnt += 1                ans = max(ans, cnt)            else:                cnt = 0        return ans

                                             
0 0
原创粉丝点击