首页 > 其他分享 >Leetcode_485. 最大连续 1 的个数

Leetcode_485. 最大连续 1 的个数

时间:2023-08-27 16:00:10浏览次数:48  
标签:nums int max 个数 maxLen num 485 Leetcode

题目描述

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

示例:

输入:[1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

提示:

输入的数组只包含 0 和 1 。
输入数组的长度是正整数,且不超过 10,000。

参考实现

示例1

由于要累计最大连续 1 的个数,且数组元素只有0,1,遇到不连续的时候,需要标记之前连续1的长度,借助小学数学知识 num * 0 = 0 的知识,可以实现如下

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        '''
        返回最含485. 最大连续 1 的个数
        :param nums:0 ,1 组成的列表
        :return:最大连续 1 的个数
        '''
        num, maxLen = 0, 0
        for i in nums:
            '''
            遇到元素为 0,num 则为 0
            否则:num 为连续1的个数
            比如 nums = [0,1,1,0]
            nums[0] = 0:num = 0,maxLen = 0
            nums[1] = 1;num = 1,maxLen = 1 
            nums[2] = 1;num = 2,maxLen = 2 
            nums[3] = 0;num = 0,maxLen = 2 (此时 num > maxLen 不满足,不会执行maxLen = num)
            '''
            num = num * i + i
            if num > maxLen:
                maxLen = num
        return maxLen

 另一种实现 

def findMaxConsecutiveOnes01(nums: List[int]) -> int:
    if nums is None or len(nums) == 0:
        return 0
    else:
        num, max_num = 0, 0

        for i in range(0, len(nums)):
            if nums[i] == 1:
                num += 1
            else:
                num = 0
            max_num = max(num, max_num)
        return max_num

Java 实现

    public static int findMaxConsecutiveOnes(int[] nums) {
        int m = 0, n = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                m++;
            } else {
                m = 0;
            }
            n = Math.max(m, n);
        }
        return n;
    }

 

标签:nums,int,max,个数,maxLen,num,485,Leetcode
From: https://www.cnblogs.com/wdh01/p/17472737.html

相关文章

  • [刷题记录Day22]Leetcode二叉树
    No.1题目二叉搜索树的最近公共祖先思路递归法BST特性如何利用?在BST中,公共祖先一定在p、q数值范围的中间利用BST特性定向搜索注意递归遍历一条边和遍历整棵树的写法不同递归分析返回值:节点,参数:当前节点,p,q终止逻辑:发现当前节点为空,则直接返回当前节点;为什么不用判断p......
  • flutter中通过遍历一个数组,给每个元素添加一个开关按钮怎么写
    要通过遍历一个数组给每个元素添加一个开关按钮,你可以使用ListView.builder来构建一个包含开关按钮的列表。下面是一个示例,展示了如何遍历一个数组并为每个元素添加一个开关按钮:List<bool>switchValues=List.generate(5,(index)=>false);ListView.builder(itemCount:sw......
  • leetcode 题库994——bfs典型解法(队列+递归实现)
     classSolution:deforangesRotting(self,grid:list[list[int]])->int:m,n=len(grid),len(grid[0])queue,good=[],[]defbfs(queue,good,m,n,grid):times=0directions=[(-1,0),(1,0),(0,1),(0,-1)]......
  • LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝
     classSolution:defcombine(self,n:int,k:int):nums=[x+1forxinrange(n)]res,ans=[],[]defdfs(nums:list[int]):iflen(ans)==k:ans_copy=ans.copy()#复制,避免ans数组改变使res跟着改变......
  • leetcode_35. 搜索插入位置
    题目描述35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法。输入:nums=[1,3,5,6],target=5输出:2输入:nums=[1,3,5,6],target......
  • LeetCode —— 排序
    148. 排序链表一般都用归并排序,因为是单向链表,其它排序算法根据下标找元素,向前遍历等都比较困难主函数流程是:如果head==null||head.next==nullreturnhead。因为 head.next==null即只有一个元素时,不用再划分了,而且一个元素本身也是有序的,所以返回就返回这一个元素......
  • 【LeetCode回溯算法#12】二叉树的直径,树形dp的前置内容(使用dfs)
    二叉树的直径给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • 【LeetCode动态规划#17】知道秘密的人,维护多个dp数组
    知道秘密的人数在第1天,有一个人发现了一个秘密。给你一个整数delay,表示每个人会在发现秘密后的delay天之后,每天给一个新的人分享秘密。同时给你一个整数forget,表示每个人在发现秘密forget天之后会忘记这个秘密。一个人不能在忘记秘密那一天及之后的日子里分享......
  • 1300亿参数,国内首个数学大模型MathGPT上线!多项基准赶超GPT-4
    前言 数学的命运齿轮从此开始转动。国内首个专为数学打造的千亿级大模型MathGPT正式上线,在多项基准测试中碾压GPT-4,刷新SOTA。本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。......
  • 剑指Offer 15. 二进制中1的个数
    题目链接:剑指Offer15.二进制中1的个数题目描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为'1'的个数(也被称为汉明重量).)。解法思路:思路一:num依次右移,判断每一次移动后最后一位是否是1,是的话,就ans++代码:func(numuint32)int{......