leetcode485. 最大连续 1 的个数

这篇具有很好参考价值的文章主要介绍了leetcode485. 最大连续 1 的个数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 485. 最大连续 1 的个数

题目描述

给定一个二进制数组 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分成几组,我们只需要找到最长的那一组就可以了

  1. 申请两个指针,i,j一个指向这一组第一个1的位置,寻找这一组结束的位置,i后第一个0的位置
  2. 计算两者的差值(就是这一组1的长度),
  3. i=j然后继续向后搜索其他组的长度找到最长的那一组
  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1
func findMaxConsecutiveOnes(nums []int) (r int) {
 for i, j := 01; 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 炫耀一下:

法2

法3

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-414068.html

到了这里,关于leetcode485. 最大连续 1 的个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode 1004.最大连续1的个数

    力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 硬往题目介绍上边去想的话其实非常困难,如果换种方式思考就会简单许多。 若我们将思想转化为,找出最长的子串(里面含有的0的数量最大为k),然后返回其最长长度。 这样思路就清晰了许多,那么我们使用一个zero变量来

    2024年02月09日
    浏览(24)
  • 【滑动窗口】leetcode1004:最大连续1的个数

    最大连续1的个数  这道题要我们找最大连续1的个数,看到“连续”二字,我们要想到滑动窗口的方法。滑动窗口的研究对象是一个连续的区间,这个区间需要满足某个条件。那么本题要找的是怎样的区间呢?是一个通过翻转0后得到连续1的区间,而最多可以翻转k个字符。 故

    2024年02月11日
    浏览(26)
  • 每日一练【最大连续1的个数】

    给定一个二进制数组  nums  和一个整数  k ,如果可以翻转最多  k  个  0  ,则返回  数组中连续  1  的最大个数  。 本题同样是利用滑动窗口的解法。 首先进入窗口,如果是1,就直接让right++,但是如果是0,那么需要让计数器去++,当计数器大于指定的k时,就需要让l

    2024年01月21日
    浏览(29)
  • 【数据结构和算法】最大连续1的个数 III

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:滑动窗口  2.2 滑动窗口解题模板 三、代码 3.1 方法一:滑动窗口 四、复杂度分析 4.1 方法一:滑动窗口 这是力扣的 1004 题,

    2024年02月04日
    浏览(29)
  • 数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)

    目录 题目描述 输入示例 输出示例 解题思路  解题方法(C语言) 解析 有序的二叉树遍历可以用堆栈以非递归的方式实现。 例如: 假设遍历一个节点数为6的二叉树(节点数据分别为1到6)时, 堆栈操作为:push(1);push(2);push(3);pop();pop();push(4);pop()

    2024年02月07日
    浏览(36)
  • Leetcode 628. 三个数的最大乘积

    原题链接:Leetcode 628. Maximum Product of Three Numbers Given an integer array nums , find three numbers whose product is maximum and return the maximum product. Example 1: Example 2: Example 3: Constraints: 3 = nums.length = 10 4 -1000 = nums[i] = 1000 给一个数组,要求返回数组任意三个数的乘积中最大的那个 思路: 首先要明确

    2024年01月21日
    浏览(67)
  • 【滑动窗口】长度最小的子数组|无重复字符的最长子串|最大连续1的个数 III|将 x 减到 0 的最小操作数

    1. 长度最小的子数组 - 力扣(LeetCode) (1)方法一:暴力列举出所有的子数组的和 时间复杂度:O(n**2):枚举所有子数组O(n**2) (2)方法二: 利用 单调性(两个指针都不回退) ,使用\\\" 同向双指针 \\\"(其实就是 滑动窗口 )来优化 那么 滑动窗口过程 是怎么样的? 1le

    2024年03月22日
    浏览(42)
  • 【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集

    一、什么是回溯算法 回溯算法(Backtracking Algorithm)是一种解决 组合问题 、 排列问题 、 选择问题 等一类问题的常用算法。它通过尝试所有可能的选择来找到问题的解,当发现当前选择不符合要求时,就回溯到之前的状态,然后尝试其他的选择。 1、基本思想: 从问题的起

    2024年02月11日
    浏览(34)
  • (动态规划) 剑指 Offer 42. 连续子数组的最大和 ——【Leetcode每日一题】

    难度:简单 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为 O(n) 。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示 : 1 = a r r . l e n g t h = 1 0 5 1 = arr.length = 10^

    2024年02月11日
    浏览(42)
  • 小白水平理解面试经典题目LeetCode 594 最大和谐字符串

    这道题属于字符串类型题目,解决的办法还是有很多的,暴力算法,二分法,双指针等等。 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个

    2024年01月23日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包