和为零的N个唯一整数
给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0
原题🔗:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/
解
题目要求返回任意一个数组,数据要求和为0. 想要数组之和为0的规则有很多,题目中也提到了数组元素各不相同。
因为是任意一个数组,那么找一个满足条件的规则:
- 数组中只要一个负数,并且这个负数是其余各项之和 ,数量为1
- 数组中其他项都为整数,数量为 n-1,最简单的规则未依次递增。
Java代码:
public class Solution1304 {
public static void main(String[] args) {
Arrays.stream(sumZero(10)).forEach(System.out::println);
}
public static int[] sumZero(int n) {
if (n == 0) {
return new int[0];
}
if (n == 1) {
return new int[]{0};
}
// 定义一个数组存储生成的元素
int[] arr = new int[n];
int sum = 0;
for (int i = 0; i < n - 1; i++) {
// 在生成数据这一步可以采用随机生成的原则,按顺序只是为了方便
// 传入数组,生成一个与数组不相同的数
// int r = generateUniqueNum(arr);
// sum += r;
arr[i] = i;
sum += i;
}
arr[n - 1] = -sum;
return arr;
}
}
结果
0
1
2
3
4
5
6
7
8
-36
Process finished with exit code 0