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