https://leetcode.com/problems/max-consecutive-ones/
给定一个数组,求其最长只含 1 1 1的子数组的长度。思路是快慢双指针。代码如下:
public class Solution { public int findMaxConsecutiveOnes(int[] nums) { if (nums == null || nums.length == 0) { return 0; } // l为慢指针,r为快指针 int l = 0, r = 0; int res = 0; while (true) { // 先略过不等于1的数 while (l < nums.length && nums[l] != 1) { l++; } // 如果走到末尾了,就退出循环 if (l == nums.length) { break; } // r从l开始走,略过所有等于1的数 r = l; while (r < nums.length && nums[r] == 1) { r++; } // 记录得到的长度,更新res res = Math.max(res, r - l); // 让l从r开始继续遍历数组 l = r; } return res; } }时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。