Z H 一个无所事事的烟酒僧

每日一题之和为零的N个唯一整数

2020-03-09

阅读:


题目描述

  • 时间: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)

其他优秀解答

暂无

Comments

Content