给定数组中的java Max连续数(Leetcode)
我试图在时间复杂度为O(n)且不使用超过一个单位的空间的情况下,找到数组中连续1的最大数量。(用于迭代数组的变量除外)。下面是我提出的代码,但Leetcode提交显示它超过了时间限制。我很难理解它是如何超过时间限制的,因为我只迭代数组的每个元素一次,并在同一次迭代中运行逻辑
public class MaxConsecutive {
public static void main(String[] args) {
System.out.println(findMaxConsecutiveOnes(new int[] {0,1,0,0,0,0,1,1,1}));
}
public static int findMaxConsecutiveOnes(int[] nums) {
int i=0, j=0, maxLen=0;
while(j<nums.length) {
if(nums[j] == 1) {
i=j;
while (true) {
while (j < nums.length && nums[j] == 1) {
j++;
}
if( j - i > maxLen) {
maxLen = j - i;
j++;
break;
}
}
}
else
j++;
}
return maxLen;
}
}
# 1 楼答案
一圈就够了。打电话给数学。最大值等于最小值
# 2 楼答案
# 3 楼答案
在这一部分中,除非当前长度的最大值大于
maxLen
,否则不会中断无限循环。这个循环可以是无限的,程序将为您提供TLE我删除了循环,并在这里做了一些修改:
# 4 楼答案
三个
while
循环。在我看来,你的代码太复杂了。你只需要一个循环一些更简单的解决方案: