以写作调身心

Leetcode-485-Max Consecutive Ones

题目链接

Max Consecutive Ones

解析

题目意思

给定一个二进制数组,计算数组中出现的最大连续1的个数。

注意:

  • 输入数组只包含0和1
  • 数组长度是正整数并且不会超过10000

解决

遍历数组并对连续的数计数,最终取最大值。

Golang

  • 错误
func findMaxConsecutiveOnes(nums []int) int {
	var max int  //声明最大值
    for i:=0;i <= len(nums);i++ {
		for _,v := range nums {
			if nums[i] = v {
				max++
			} else {
				max=0
			}
		}
	}

	return max
}
  • 正确1
func findMaxConsecutiveOnes(nums []int) int {
	res := 0
	count := 1
	//考虑特殊情况
	if len(nums) == 1 && nums[0] == 1 {
		return 1
	}
	for i := 0; i < len(nums)-1; i++ {
		if nums[i] == nums[i+1] {
			if nums[i] == 1 {
				count++  //计数
			} else {
				continue
			}
		} else {
			count = 1  //没有合适的就置为1
		}
		if count > res {
			res = count
		}
	}
	return res
}
  • 正确2
func findMaxConsecutiveOnes(nums []int) int {
	var sum, max int
	for _, v := range nums {
		sum += v
		sum *= v
		if sum > max {
			max = sum
		}
	}
	return max
}

评论