色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java遞增序列和為n

林雅南1年前6瀏覽0評論

Java中遞增序列和為n是一個經典的問題,一般可以使用雙指針或動態規劃解決。下面分別介紹這兩種解法。

雙指針解法

public int[] findContinuousSequence(int target) {
List>res = new ArrayList<>();
int i = 1, j = 2, sum = 3;
while (i< j) {
if (sum == target) {
Listlist = new ArrayList<>();
for (int k = i; k<= j; k++) {
list.add(k);
}
res.add(list);
sum -= i;
i++;
} else if (sum< target) {
j++;
sum += j;
} else {
sum -= i;
i++;
}
}
int[][] ans = new int[res.size()][];
for (int k = 0; k< res.size(); k++) {
ans[k] = res.get(k).stream().mapToInt(value ->value).toArray();
}
return ans;
}

動態規劃解法

public int[] findContinuousSequence(int target) {
List>res = new ArrayList<>();
for (int i = 1; i<= target / 2; i++) {
int sum = i;
Listlist = new ArrayList<>();
list.add(i);
for (int j = i + 1; j<= target / 2 + 1; j++) {
if (sum + j >target) {
break;
}
sum += j;
list.add(j);
if (sum == target) {
res.add(list);
break;
}
}
}
int[][] ans = new int[res.size()][];
for (int i = 0; i< res.size(); i++) {
ans[i] = res.get(i).stream().mapToInt(value ->value).toArray();
}
return ans;
}