Max Consecutive Ones
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相关推荐
- leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)
485. Max Consecutive Ones https://leetcode.com/problems/max-consecutive-ones/ easy 题,思路不说了,直接上代码. cl ...
- 485. Max Consecutive Ones - LeetCode
Question 485. Max Consecutive Ones Solution 题目大意:给一个数组,取连续1的最大长度 思路:遍历数组,连续1就加1,取最大 Java实现: public i ...
- 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 ...
- 485. Max Consecutive Ones
题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...
- LeetCode 485. Max Consecutive Ones
题目描述: Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Inpu ...
- C#LeetCode刷题之#485-最大连续1的个数(Max Consecutive Ones)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3714 访问. 给定一个二进制数组, 计算其中最大连续1的个数. ...
- 【LeetCode】487. Max Consecutive Ones II 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetco ...
- LeetCode Max Consecutive Ones
题意:给出一个数组,求数组中连续1出现次数最大 的数 思路:记住上一个数,通过与当前数比较 (1)当前数为1,并且前一个数也为1,则计数加1 (2)当前数为1,前一个数不娄1,计数赋值为1 (3)当前 ...
- LeetCode之Max Consecutive Ones
1.题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input ...
- 【Leetcode】487. Max Consecutive Ones II
题目地址: https://leetcode.com/problems/max-consecutive-ones-ii/description/ 给定一个长nnn的010101数组AAA,允许将任意一 ...
最新文章
- 找不到第三方怎么理赔_车子被撞,找不到肇事者怎么办?
- 2018年《环球科学》十大科学新闻出炉:霍金逝世、贺建奎事件位列前二
- python 文件中出现 Indentation Error: unexpected indent 的错误
- Java爬取frame的课程表_从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;...
- Boost:基于Boost的阻塞TCP回显服务器
- LuoGu P2002 消息扩散
- 前端学习(2562):v-loading
- 在Linux系统中应用su和sudo
- 函数的非固定参数,默认参数,参数组
- fanuc机器人码垛编程实例_两个很简单的FANUC系统CNC加工中心编程实例
- centos下安装JAVA开发工具(1)------JDK
- python中的rt_TensorRT学习总结
- php curl 错误码,php,_PHP curl 错误 :curl__errno()返回错误码6,php - phpStudy
- 45 个 Git 经典操作场景---教你如何合并代码
- One Pixel Attack(对抗攻击) —— 使用差分进化算法寻找最优解
- 中文简体与繁体的转换
- Intent的基本属性及用法
- Python 利用pandas 获取Excel重复记录
- QT不规则窗口的移动原理和证明/QT窗口背景透明(附代码实现)
- Android view 部分 setContentView 的前因后果
热门文章
- 如何快速创建营销型和展示型网站,两者有什么区别
- 第十三届蓝桥杯CB组H题扫雷
- 百度智能云重庆工业互联网平台正式亮相,深耕重庆,辐射西南
- CS品牌SD NAND在空气质量检测行业中的应用案例
- 【SSL】1608皇宫看守
- 俄2架苏-34轰炸机发生擦撞 已找到2名飞行员遗体
- java:编写一个程序,生成0和9之间的100个随机整数,然后显示每一个数出现的次数。需要使用数组。
- 【金格iwebFile并发问题】同时上传文档系统提示连接服务器失败。
- 【第3章】Stable Diffusion webUI提示词(3大套路/chatGPT生成提示词/反推提示词/语法规则/提示词库/正向/负向提示词)
- 减少餐饮浪费,大数据是怎么做到的?