public static int minSubArrayLen(int target, int[] nums) {
int len = nums.length;
int sum = 0, res = Integer.MAX_VALUE, tmp = 0;
for (int i = 0, j = 0; j < len; j++) {
sum += nums[j];
while (sum >= target) {
tmp = j - i + 1;
res = res < tmp ? res : tmp;
if (res == 1) {
return res;
}
sum -= nums[i++];
}
}
return res == Integer.MAX_VALUE ? 0 : res;
}
public static int totalFruit(int[] fruits) {
int len, tmp, res = 0;
if ((len = fruits.length) == 0) {
return res;
}
int t1 = fruits[0], t2 = t1;
for (int i = 0, j = 0; j < len; j++) {
if (fruits[j] == t1 || fruits[j] == t2) {
tmp = j - i + 1;
res = res > tmp ? res : tmp;
continue;
}
if (t1 == t2) {
t2 = fruits[j];
tmp = j - i + 1;
res = res > tmp ? res : tmp;
continue;
}
for (i = j - 2; fruits[i] == fruits[j - 1]; i--) {
}
i++;
t1 = fruits[j - 1];
t2 = fruits[j];
}
return res;
}
int len = t.length();
int[] arr = new int[59];
for (int i = 0; i < len; i++) {
arr[t.charAt(i) - 64] += 1;
if (arr[t.charAt(i) - 64] == 1) {
arr[0] += 1;
}
}
int start = 0, end = 0, tmp = 0, res = Integer.MAX_VALUE;
for (int i = 0, j = 0; j < s.length(); j++) {
if (t.indexOf(s.charAt(j)) != -1) {
arr[s.charAt(j) - 64] -= 1;
if (arr[s.charAt(j) - 64] == 0) {
arr[0] -= 1;
}
}
while (arr[0] == 0) {
for (; t.indexOf(s.charAt(i)) == -1 || arr[s.charAt(i) - 64] < 0; i++) {
if (arr[s.charAt(i) - 64] < 0) {
arr[s.charAt(i) - 64] += 1;
}
}
tmp = j - i + 1;
if (tmp < res) {
start = i;
end = j;
res = tmp;
}
arr[s.charAt(i) - 64] += 1;
arr[0] += 1;
i++;
}
}
if (tmp < len) {
return "";
} else {
return s.substring(start, end + 1);
}
本文章使用limfx的vscode插件快速发布