public int getMax(int[] products, int[] works, int windowSize) {
int len = products.length;
int[] sum = new int[len];
int[] realSum = new int[len];
sum[0] = products[0];
realSum[0] = (works[0] == 1 ? products[0] : 0);
for (int i = 1; i < len; i++) {
int isWork = works[i];
sum[i] += sum[i - 1] + products[i];
if (isWork == 1) {
realSum[i] += realSum[i - 1] + products[i];
} else {
realSum[i] = realSum[i - 1];
}
}
int right = Math.min(windowSize, len) - 1;
int result = sum[right] - sum[0] + products[0];
for (int i = 1; i < len; i++) {
int last = i + windowSize - 1;
if (last >= len) {
break;
}
int curSum = realSum[i - 1] - realSum[0] + realSum[0];
curSum += sum[i + windowSize - 1] - sum[i-1];
curSum += realSum[len - 1] - realSum[i + windowSize - 1];
result = Math.max(curSum, result);
}
return result;
}
public static void main1(String[] args) {
int[] products = {100, 200, 150};
int[] works = {0, 1, 0};
int windowSize = 2;
Problem1 p1 = new Problem1();
int result = p1.getMax(products, works, windowSize);
System.out.println(result);
}
public static void main(String[] args) {
int[] products = {100, 200, 150, 100, 360};
int[] works = {0, 1, 0, 1, 0};
int windowSize = 2;
Problem1 p1 = new Problem1();
int result = p1.getMax(products, works, windowSize);
System.out.println(result);
}
加班生产产品
最新推荐文章于 2024-05-03 16:12:22 发布