题目:
给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。
示例 1:
输入:n = 5
输出:[-7,-1,1,3,4]
解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。
示例 2:
输入:n = 3
输出:[-1,0,1]
示例 3:
输入:n = 1
输出:[0]
提示:
1 <= n <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-n-unique-integers-sum-up-to-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
结果:
解题思路:
1,正数和负数保持绝对值相等
2,如果是奇数个数,则中间的数字设置为0
代码:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* sumZero(int n, int* returnSize){
int *arr = (int *)malloc(sizeof(int) * n);
int i;
*returnSize = n;
for(i = 0; i < n; i++)
{
if(i == 0)
arr[i] = -(n/2);
else if(i == n/2 && n % 2 == 0)
{
arr[i] = arr[i-1] + 2;
}
else
arr[i] = arr[i-1] + 1;
}
return arr;
}