https://leetcode.com/problems/fruit-into-baskets/
选取最大长度的子数组,只包含两种值。
做法:双指针
public int totalFruit(int[] tree) {
int[] cnt = new int[40010];
int l = 0;
int types = 0;
int result = -1;
for (int r = 0; r < tree.length; r++) {
if (++cnt[tree[r]] == 1) {
types++;
}
while (types > 2) {
if (--cnt[tree[l]] == 0) {
types--;
}
l++;
}
result = Math.max(result, r - l + 1);
}
return result;
}
更多的优秀代码https://leetcode.com/contest/weekly-contest-102/ranking,第二题