1304. 和为零的 N 个不同整数
题目描述
给你一个整数 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
解法
方法一:构造
我们可以从 $1$ 开始,依次将正数和负数交替放入结果数组中,一共循环 $\frac{n}{2}$ 次,如果 $n$ 为奇数,则最后再将 $0$ 放入结果数组中。
时间复杂度 $O(n)$,其中 $n$ 为给定的整数。忽略答案的空间消耗,空间复杂度 $O(1)$。
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 |
|
方法二:构造 + 数学
我们也可以将 $1$ 到 $n-1$ 的所有整数放入结果数组中,最后再把前 $n-1$ 个整数的和 $\frac{n(n-1)}{2}$ 的相反数放入结果数组中。
时间复杂度 $O(n)$,其中 $n$ 为给定的整数。忽略答案的空间消耗,空间复杂度 $O(1)$。
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 |
|