和为零的N个唯一整数-LeetCode1304

给你一个整数 n,请你返回 任意 一个由 n各不相同 的整数组成的数组,并且这 n 个数相加和为 0 .

解:题目要求返回任意一个数组,数据要求和为0. 想要数组之和为0的规则有很多,题目中也提到了数组元素各不相同。

因为是任意一个数组,那么找一个满足条件的规则:

  • 数组中只要一个负数,并且这个负数是其余各项之和 ,数量为1
  • 数组中其他项都为整数,数量为 n-1,最简单的规则未依次递增。

直接写代码:

public class Solution1304 {

    public int[] sumZero(int n) {
        if (n == 0) {
            return new int[0];
        }
        if (n == 1) {
            return new int[]{0};
        }
        // 定义一个数组存储生成的元素
        int[] arrs = new int[n];
        int sum = 0;
        
        
        for (int i = 0; i < n - 1; i++) {
            // 在生成数据这一步可以采用随机生成的原则,按顺序只是为了方便
            // 传入数组,生成一个与数组不相同的数
            // int r = generateUniqueNum(arr);
            // sum += r;
            arrs[i] = i;
            sum += i;
        }
        arrs[n - 1] = -sum;
        return arrs;
    }
}

image-20200108072038095
  • 1304. 和为零的N个唯一整数

扩展:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/

你可能感兴趣的:(和为零的N个唯一整数-LeetCode1304)