题目描述
-
和为零的 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
解题思路
法1
指针:\
和值为0
我们可以考虑使用指针的方法来解决
维护一个指针指向数组的开始位置与结束位置,分别给他们的数值赋值为相反数,这样和值值就为0了
指针向中间移动,直到左指针>右指针不成立时结束循环,.并返回结果数组
-
时间复杂度(O(n)) -
空间复杂度(O(1))
执行结果
法1
func sumZero(n int) []int {
//返回结果数组
a:=make([]int,n)
//赋值
for i:=0;i<n/2;i++{
//i位赋值为i+1(从0开始)
a[i]=i+1
//n-1-i位赋值为-i-1(最后一个位置)
a[n-i-1]=-(i+1)
}
//返回结果
return a
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2.1 MB , 在所有 Go 提交中击败了 81.48% 的用户 通过测试用例: 42 / 42 炫耀一下:
本文由 mdnice 多平台发布