题目描述
- 时间:2020-03-09
- 题目链接:https://leetcode-cn.com/problems/find-n-unique-integers-sum-up-to-zero/
- tag:
构造法
中心对称
- 难度:简单
给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。
Example 1:
输入:n = 5
输出:[-7,-1,1,3,4]
解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。
Example 2:
输入:n = 3
输出:[-1,0,1]
Example 2:
输入:n = 1
输出:[0]
Note:
1 <= n <= 1000
参考答案
按照过程
参考代码
构造法
根据题意,我们可以假设n-1个整数,并且相加起来,然后取反,得到的数和前n-1个整数刚好和为0
/*
* @lc app=leetcode id=1304 lang=python
*
* [1304] 和为零的N个唯一整数
*/
class Solution:
def sumZero(self, n: int) -> List[int]:
return [-n*(n-1)//2]+list(range(1,n))
时间复杂度:这么算时间复杂度其实就是o(1) 突然觉得python好强大 一行搞定
中心对称
#####思路:
此方法就是采用对称的方式, 例如 输入4 输出为 [-1,1,-2,2] , 输入 5 输出 [-1,1,-2,2,0]。
每两个两个加入数组就是了,+1,-1,+2,-2,奇偶可以不判断,奇数必定有一个 0,最后落单剩下的一个自然就是 0 了,数组初始化就是 0 了。
class Solution:
def sumZero(self, n: int) -> List[int]:
result = [0] * n
for i in range(0, n-1,2):
result[i]=-(i+1)
result[i+1]=i+1
return result
复杂度分析
时间复杂度:O(N)
其他优秀解答
暂无