Given a binary array, find the maximum number of consecutive 1s in this array.

给定一个二进制数组,查找这个数组中连续的1的最大数量。

Example 1:

Input: [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s.The maximum number of consecutive 1s is 3.

解题思路:

使用快慢指针,m找1,n找经过连续1之后的第一个0。相减便是所求。

代码注释很详细,不做过多解释

代码如下:

public class Solution
{public int findMaxConsecutiveOnes(int[] nums){//定义了两个指针int m,n;int b;int k=0;int maxlength=0;m=0;int sum=0;//特殊情况处理,若数组和为一,则直接返回1for(int i=0;i<=nums.length-1;i++){sum+=nums[i];}if(sum==1){return 1;}while(m<=nums.length-1)//循环终止的条件{while(nums[m]!=1&&m<nums.length-1)//找到第一个1停止{m++;}k++;//计数器n=m+1;//找到第一个m后,n就要从他的后面找起if(n>nums.length-1)//此处是一个判断条件,在n向后移动的过程中,发现n超界作如下处理{if(nums.length==1&&nums[0]==1)//数组长度是1,并且值为1{return 1;}//否则返回maxlengthreturn maxlength;}elsewhile(nums[n]==1)//相互查找n,查到第一个不为1的数组元素{if(n==nums.length-1)//在查找的过程中,n到了最后一位,将不再执行循环,否则下一次循环会出界{n++;//必须做加运算,否则长度将会减一break;//跳出循环}n++;}if(k==1)//如果k等于1,则证明是第一次循环,这时取到maxlength,方便以后进行比较{maxlength=n-m;  }maxlength=Math.max(maxlength,n-m);m=n+1;//一次查找完成后,将m移到n得下一位,以便进行下次查找}return maxlength;}
}

更加简便的算法:

public class Solution
{public int findMaxConsecutiveOnes(int[] nums){int max=0;int temp=0;for(int i:nums){if(i==1){temp++;}else{max=temp>max?temp:max;temp=0;}}max=temp>max?temp:max;return max;}
}

这种算法想法简单,直接找1,找到就计数器加一,然后赋值比较,最终得出最大值。

Max Consecutive Ones相关推荐

  1. leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)

    485. Max Consecutive Ones https://leetcode.com/problems/max-consecutive-ones/ easy 题,思路不说了,直接上代码. cl ...

  2. 485. Max Consecutive Ones - LeetCode

    Question 485. Max Consecutive Ones Solution 题目大意:给一个数组,取连续1的最大长度 思路:遍历数组,连续1就加1,取最大 Java实现: public i ...

  3. Leetcode日练笔记19 #487 Max Consecutive Ones II (Medium)

    #487 Max Consecutive Ones II (Medium) Given a binary array nums, return the maximum number of consec ...

  4. 485. Max Consecutive Ones

    题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...

  5. LeetCode 485. Max Consecutive Ones

    题目描述: Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Inpu ...

  6. C#LeetCode刷题之#485-最大连续1的个数(Max Consecutive Ones)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3714 访问. 给定一个二进制数组, 计算其中最大连续1的个数. ...

  7. 【LeetCode】487. Max Consecutive Ones II 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetco ...

  8. LeetCode Max Consecutive Ones

    题意:给出一个数组,求数组中连续1出现次数最大 的数 思路:记住上一个数,通过与当前数比较 (1)当前数为1,并且前一个数也为1,则计数加1 (2)当前数为1,前一个数不娄1,计数赋值为1 (3)当前 ...

  9. LeetCode之Max Consecutive Ones

    1.题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input ...

  10. 【Leetcode】487. Max Consecutive Ones II

    题目地址: https://leetcode.com/problems/max-consecutive-ones-ii/description/ 给定一个长nnn的010101数组AAA,允许将任意一 ...

最新文章

  1. 找不到第三方怎么理赔_车子被撞,找不到肇事者怎么办?
  2. 2018年《环球科学》十大科学新闻出炉:霍金逝世、贺建奎事件位列前二
  3. python 文件中出现 Indentation Error: unexpected indent 的错误
  4. Java爬取frame的课程表_从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;...
  5. Boost:基于Boost的阻塞TCP回显服务器
  6. LuoGu P2002 消息扩散
  7. 前端学习(2562):v-loading
  8. 在Linux系统中应用su和sudo
  9. 函数的非固定参数,默认参数,参数组
  10. fanuc机器人码垛编程实例_两个很简单的FANUC系统CNC加工中心编程实例
  11. centos下安装JAVA开发工具(1)------JDK
  12. python中的rt_TensorRT学习总结
  13. php curl 错误码,php,_PHP curl 错误 :curl__errno()返回错误码6,php - phpStudy
  14. 45 个 Git 经典操作场景---教你如何合并代码
  15. One Pixel Attack(对抗攻击) —— 使用差分进化算法寻找最优解
  16. 中文简体与繁体的转换
  17. Intent的基本属性及用法
  18. Python 利用pandas 获取Excel重复记录
  19. QT不规则窗口的移动原理和证明/QT窗口背景透明(附代码实现)
  20. Android view 部分 setContentView 的前因后果

热门文章

  1. 如何快速创建营销型和展示型网站,两者有什么区别
  2. 第十三届蓝桥杯CB组H题扫雷
  3. 百度智能云重庆工业互联网平台正式亮相,深耕重庆,辐射西南
  4. CS品牌SD NAND在空气质量检测行业中的应用案例
  5. 【SSL】1608皇宫看守
  6. 俄2架苏-34轰炸机发生擦撞 已找到2名飞行员遗体
  7. java:编写一个程序,生成0和9之间的100个随机整数,然后显示每一个数出现的次数。需要使用数组。
  8. 【金格iwebFile并发问题】同时上传文档系统提示连接服务器失败。
  9. 【第3章】Stable Diffusion webUI提示词(3大套路/chatGPT生成提示词/反推提示词/语法规则/提示词库/正向/负向提示词)
  10. 减少餐饮浪费,大数据是怎么做到的?