leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)
485. Max Consecutive Ones
https://leetcode.com/problems/max-consecutive-ones/
easy 题,思路不说了,直接上代码。
class Solution {public int findMaxConsecutiveOnes(int[] nums) {int cnt = 0;int max = 0;for (int num : nums) {if (num == 0) cnt = 0;else max = Math.max(max, ++cnt);}return max;}
}
487. Max Consecutive Ones II
力扣这题需要 plus 会员,所以,为了保证“Max Consecutive Ones”的完整性,临时用一下 lintcode。
https://www.lintcode.com/problem/883/
本题思路由题目 III 加了一个条件 k=1 改编而来。
另外,lintcode 的测试用例不够全面,之前写了一个明显的 bug 但还是通过了,后来才发现,已更正。
public class Solution {public int findMaxConsecutiveOnes(int[] nums) {int k = 1;int cnt = 0;List<Integer> list = new ArrayList<>();for (int n : nums) {if (n == 0) {if (cnt != 0) list.add(cnt);list.add(0);cnt = 0;} else cnt++;}if (nums[nums.length - 1] == 1) list.add(cnt);int maxSum = 0;for (int i = 0; i < list.size(); i++) {int curSum = 0;int zeroCnt = 0;for (int j = i; j < list.size(); j++) {if (list.get(j) == 0) {if (++zeroCnt > k) break;curSum++;} else {curSum += list.get(j);}}maxSum = Math.max(maxSum, curSum);}if (maxSum == 0) {int zeroCnt = 0;for (Integer n : list) {if (n == 0) {if (++zeroCnt > k) break;maxSum++;} else {maxSum += n;}}}return maxSum;}
}
1004. Max Consecutive Ones III
https://leetcode.com/problems/max-consecutive-ones-iii/
普通思路
public class Solution {public int longestOnes(int[] nums, int k) {// 建立辅助数组int cnt = 0;List<Integer> list = new ArrayList<>();for (int n : nums) {if (n == 0) {if (cnt != 0) list.add(cnt);list.add(0);cnt = 0;} else cnt++;}if (nums[nums.length - 1] == 1) list.add(cnt); // 处理边界// 利用辅助数组计算maxSumint maxSum = 0;for (int i = 0; i < list.size(); i++) {int curSum = 0;int zeroCnt = 0;for (int j = i; j < list.size(); j++) {if (list.get(j) == 0) {if (++zeroCnt > k) break;curSum++;} else {curSum += list.get(j);}}maxSum = Math.max(maxSum, curSum);}// 独立处理因数组长度不足而无法进入for循环的情况if (maxSum == 0) {int zeroCnt = 0;for (Integer n : list) {if (n == 0) {if (++zeroCnt > k) break;maxSum++;} else {maxSum += n;}}}return maxSum;}
}
进阶思路:滑动窗口
思路参考:https://leetcode-cn.com/problems/max-consecutive-ones-iii/solution/hua-dong-chuang-kou-de-liang-chong-jie-j-8ses/
双指针法,时间复杂度O(n)。
public int longestOnes(int[] A, int K) {int left = 0;//窗口左边的位置int right = 0;//窗口右边的位置int zeroCount = 0;//窗口中0的个数for (; right < A.length; right++) {if (A[right] == 0) {zeroCount++;}//如果窗口中0的个数超过了K,要缩小窗口的大小if (zeroCount > K && A[left++] == 0)zeroCount--;}return right - left;
}
leetcode 485,487,1004. Max Consecutive Ones I ,II, III(最大连续1的个数问题合集)相关推荐
- LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)
文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat , 请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...
- leetcode 496, 503, 556. Next Greater Element I, II, III | 496, 503, 556. 下一个更大元素 I,II,III(单调栈)
496. Next Greater Element I https://leetcode.com/problems/next-greater-element-i/ 单调栈问题,参考:https://l ...
- leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)
263. Ugly Number https://leetcode.com/problems/ugly-number/ 本题题解由下面的 264. Ugly Number II 改造而来,所以效率会比 ...
- Ableton Max for Live Collection ALP 音频MIDI效果合成控制设备拓展合集
格式: Ableton/ALP 参数: 24 bit 48 kHz stereo 系统: Windows/MacOS. 要求: Live (9.5 / 10.0 或更新版本) 大小: 6GB Max ...
- 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 ...
- 【LeetCode】487. Max Consecutive Ones II 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetco ...
- 485. Max Consecutive Ones
题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...
- C#LeetCode刷题之#485-最大连续1的个数(Max Consecutive Ones)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3714 访问. 给定一个二进制数组, 计算其中最大连续1的个数. ...
最新文章
- 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript
- 设置Eclipse智能提示(转)
- CMakeList下打印log
- 北大清华的状元之争:一个典型的囚徒困境
- Java中httpClient中的设置超时时间
- DB,Cache和Redis应用场景分析
- nginx 优化(收藏)
- js设计模式——8.中介者模式
- 老李分享:持续集成学好jenkins之解答疑问
- 简化CommunityServer模板机制
- 使用虚拟环境 virtualenv
- OpenStack还是OpenStack,云已不是那朵云!
- JAVA实验面向对象程序设计,面向对象程序设计a(java)实验报告.docx
- JavaWeb项目开发流程
- Windows源码编译运行pgAdmin4
- 计数器代码php,php的计数器程序_php
- 资深程序员和你重学五线谱 - 第一篇
- 全网最全最细的vmware虚拟机创建教程,一步一步教你完成虚拟机创建。
- 小米一体化微水滴形态转轴,揭露小米MIX Fold 2的轻薄秘密
- 在pb中实现声音文件的播放
热门文章
- MMDetection-简介
- Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...
- BST(Binary Search Tree 二叉查找树模版)
- POJ1220(高精度进制转换)
- live555 源码分析:简介
- H.264 视频的 RTP 载荷格式
- OkHttp3中的HTTP/2首部压缩
- OkHttp3的连接池及连接建立过程分析
- 分布式系统概念 | 一致性协议:拜占庭将军问题、Paxos、Raft
- 小红书shield算法分析