- 题目描述
- 解题思路
- 执行结果
题目描述
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 示例 2:
输入:nums = [1,0,1,1,0,1] 输出:2
提示:
1 <= nums.length <= 105 nums[i] 不是 0 就是 1.
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/max-consecutive-ones 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
法1
双指针法:
我们可以将这个题理解为由0将1分成几组,我们只需要找到最长的那一组就可以了
-
申请两个指针,i,j一个指向这一组第一个1的位置,寻找这一组结束的位置,i后第一个0的位置 -
计算两者的差值(就是这一组1的长度), -
i=j然后继续向后搜索其他组的长度找到最长的那一组
-
时间复杂度(O(n)) -
空间复杂度(O(1))
执行结果
法1
func findMaxConsecutiveOnes(nums []int) (r int) {
for i, j := 0, 1; i < len(nums); i++ {
if nums[i] == 1 {//首个1
j = i + 1
for j < len(nums) {
if nums[j] == 1 {
j++
} else {//找0出现的位置
break
}
}
if j-i > r {//计算长度,如果大于就赋值
r = j - i
}
i = j
}
}
return
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 32 ms , 在所有 Go 提交中击败了 71.79% 的用户 内存消耗: 6.5 MB , 在所有 Go 提交中击败了 52.50% 的用户 通过测试用例: 42 / 42 炫耀一下:文章来源:https://www.toymoban.com/news/detail-414068.html
法2
法3
本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-414068.html
到了这里,关于leetcode485. 最大连续 1 的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!