前言说明
算法学习,日常刷题记录。
题目连接
题目内容
给你一个整数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
分析过程
定义结果数组results,定义总和sum。
从1开始遍历到n - 1,每次把n本身赋值到结果数组results中,总和sum累加n。
遍历结束后,构造结果数组results的第n个数,这个数取总和sum的负数,因为它们相加之为0。
解答代码
class Solution {
public int[] sumZero(int n) {
// 定义结果数组results
int[] results = new int[n];
if (n <= 1) {
// 若n小于等于1,那么结果数组results只有一个元素,并且是0
results[0] = 0;
}
// 定义总和
int sum = 0;
// 从1开始遍历到n-1
for (int i = 1; i <= n - 1; ++i) {
// 每次把n本身赋值到结果数组results中
results[i - 1] = i;
// 累加n值得到总和
sum += i;
}
// 结果数组results的最后一个元素取总和的负数,那么他们相加之和就肯定为0了
results[n - 1] = sum * -1;
return results;
}
}
提交结果
执行用时0ms,时间击败100.00%的用户,内存消耗36.8MB,空间击败45.13%的用户。
运行结果关注更多
更多链接:更多链接
网友评论