从 n 个数中取连续的 m 个数, 使其和最大
程序员文章站
2024-03-16 14:34:40
...
穷举法的时间复杂度为 O(nm - m^2), 略去实现.
以下实现的时间复杂度为 O(n - m), 空间复杂度为 O(1).
public class Test {
public static void main(String[] args) {
int[] numberArr = {1, 2, 4, 6, 2, 1, 0, -1, 8, 10, 0};
int range = 4;
int result = find(numberArr, range);
System.out.println("满足条件的子集的起始索引为: " + result);
}
public static int find(int[] numberArr, int range) {
int target = 0, i = 0, j = range;
int isum = 0, jsum = 0;
for (; j < numberArr.length; i++, j++) {
isum += numberArr[i];
jsum += numberArr[j];
if (isum < jsum) {
target = j + 1 - range;
isum = 0;
jsum = 0;
}
}
return target;
}
}
推荐阅读
-
python:从1到m这m个数里面取n个不同的数,使它们和是s
-
从 n 个数中取连续的 m 个数, 使其和最大
-
从1—9中取三个数相加和为偶数的概率
-
topK问题——N个数中取最大的K个数
-
从m个数中取n个数
-
php 从m个数中取n个数组合,超出内存怎么办?
-
Go语言实现的排列组合问题实例(n个数中取m个)
-
输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等
-
蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(<=10000) 输出 m 行(n有m
-
5.1 编写程序 从键盘上输入5个整数,并存放到一个数组中,然后计算所有元素的和,最大值、最小值以及 平均值