代码仅有一个测试用例不通过,原因是超出时间限制。
代码的时间复杂度为O(n)与题解一致
class Solution {
public int totalFruit(int[] fruits) {
int left = 0;
int right = 0;
int maxSum = 0;
for (right = 0; right < fruits.length; right++) {
int left2 = left;
while (fruits[left] == fruits[left2]) {
if (left2 == fruits.length - 1) {
maxSum = left2 - left + 1;
return maxSum;
} else {
left2++;
}
}
if (fruits[right] == fruits[left] || fruits[right] == fruits[left2]) {
maxSum = Math.max(maxSum, right - left + 1);
} else {
left = right - 1;
while (fruits[left] == fruits[left - 1]) {
left--;
}
}
}
return maxSum;
}
}
