C練題筆記之:Leetcode-1304. 和爲零的N個唯一整數

2020-08-11 23:26:37

題目:

給你一個整數 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;
}