X

LEETCODE 1304. Find N Unique Integers Sum up to Zero 解题思路分析

题目大意:

和为零的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

如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=1304

解题思路分析:

这道题最简单的想法是考虑如何使N个不相同的数之和为0。如果N为偶数,那么我们随便找N/2个不同的正数以及N/2个不同的负数,正数与负数的绝对值相同即可,比如[1,-1,2,-2,3,-3,….]。如果N是奇数也不要紧,在结果中再加一个数字0即可。

实现代码:

public int[] sumZero(int n) {
    int[] res = new int[n]; // 返回结果
    if(n%2==1) res[--n]=0; // 如果n为奇数,先加一个0
    int index=0; // 当前下标
    // 分别加入n/2个正数以及n/2个负数
    for(int i=1;i<=n/2;i++){
        res[index++]=i;
        res[index++]=-i;
    }
    return res;
}

本题解法执行时间为0ms。

Runtime: 0 ms, faster than 100.00% of Java online submissions for Find N Unique Integers Sum up to Zero.

Memory Usage: 34.9 MB, less than 100.00% of Java online submissions for Find N Unique Integers Sum up to Zero.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: https://leetcode.jp/leetcode-1304-find-n-unique-integers-sum-up-to-zero-解题思路分析/
Categories: leetcode
kwantong: