1.【485】 最大连续1的个数
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
思路1: count计数
1、遍历数组,如果值为1则用count++来记录。每次将记录更新到ans中。count的值既为连续的1。
2、遍历数组,如果只不为1则count置为0。
3、遍历结束后返回ans。
代码:
func findMaxConsecutiveOnes(nums []int) int {
count :=0
ans :=0
for i:=0;i<len(nums);i++{
if nums[i] == 1 {
count++
} else {
count = 0
}
ans = max(ans, count)
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
思路2 :滑动窗口
滑动窗口思想就是让left和right在值1之间滑动啊。当left...right为1的时候这里面是一个滑动窗口,当nums[right] == 0 的时候说明已经不是在滑动窗口范围内了,此时要更新left下标。
func findMaxConsecutiveOnes(nums []int) int {
left, right :=0 , 0
ans := 0
for right < len(nums) {
if nums[right] == 1 {
ans = max(ans, right-left+1)
}
if nums[right] != 1 {
left = right + 1
}
right++
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}