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的个数问题合集)相关推荐

  1. LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个只包含 0 和 1 的 rows * columns 矩阵 mat , 请你返回有多少个 子矩形 的元素全部都是 1 . 示例 1: 输入:mat ...

  2. 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 ...

  3. 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 改造而来,所以效率会比 ...

  4. Ableton Max for Live Collection ALP 音频MIDI效果合成控制设备拓展合集

    格式: Ableton/ALP 参数: 24 bit 48 kHz stereo 系统: Windows/MacOS. 要求: Live (9.5 / 10.0 或更新版本) 大小: 6GB Max ...

  5. 485. Max Consecutive Ones - LeetCode

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

  6. 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 ...

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

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

  8. 485. Max Consecutive Ones

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

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

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

最新文章

  1. 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript
  2. 设置Eclipse智能提示(转)
  3. CMakeList下打印log
  4. 北大清华的状元之争:一个典型的囚徒困境
  5. Java中httpClient中的设置超时时间
  6. DB,Cache和Redis应用场景分析
  7. nginx 优化(收藏)
  8. js设计模式——8.中介者模式
  9. 老李分享:持续集成学好jenkins之解答疑问
  10. 简化CommunityServer模板机制
  11. 使用虚拟环境 virtualenv
  12. OpenStack还是OpenStack,云已不是那朵云!
  13. JAVA实验面向对象程序设计,面向对象程序设计a(java)实验报告.docx
  14. JavaWeb项目开发流程
  15. Windows源码编译运行pgAdmin4
  16. 计数器代码php,php的计数器程序_php
  17. 资深程序员和你重学五线谱 - 第一篇
  18. 全网最全最细的vmware虚拟机创建教程,一步一步教你完成虚拟机创建。
  19. 小米一体化微水滴形态转轴,揭露小米MIX Fold 2的轻薄秘密
  20. 在pb中实现声音文件的播放

热门文章

  1. MMDetection-简介
  2. Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...
  3. BST(Binary Search Tree 二叉查找树模版)
  4. POJ1220(高精度进制转换)
  5. live555 源码分析:简介
  6. H.264 视频的 RTP 载荷格式
  7. OkHttp3中的HTTP/2首部压缩
  8. OkHttp3的连接池及连接建立过程分析
  9. 分布式系统概念 | 一致性协议:拜占庭将军问题、Paxos、Raft
  10. 小红书shield算法分析