和为零的N个唯一整数

和为零的N个唯一整数

马草原 346 2022-08-20

和为零的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