To get n unique integers that sum to zero, we can pair numbers symmetrically around zero (e.g., -1 and 1, -2 and 2, …). If n is odd, include 0 as well.
classSolution {
public: vector<int> sumZero(int n) {
vector<int> ans;
for (int i =1; i <= n/2; ++i) {
ans.push_back(i);
ans.push_back(-i);
}
if (n %2==1) ans.push_back(0);
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
funcsumZero(nint) []int {
ans:= []int{}
fori:=1; i<=n/2; i++ {
ans = append(ans, i, -i)
}
ifn%2==1 {
ans = append(ans, 0)
}
returnans}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
publicint[]sumZero(int n) {
int[] ans =newint[n];
int idx = 0;
for (int i = 1; i <= n/2; i++) {
ans[idx++]= i;
ans[idx++]=-i;
}
if (n % 2 == 1) ans[idx]= 0;
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution {
funsumZero(n: Int): IntArray {
val ans = mutableListOf<Int>()
for (i in1..n/2) {
ans.add(i)
ans.add(-i)
}
if (n % 2==1) ans.add(0)
return ans.toIntArray()
}
}
1
2
3
4
5
6
7
8
classSolution:
defsumZero(self, n: int) -> list[int]:
ans = []
for i in range(1, n//2+1):
ans.extend([i, -i])
if n %2==1:
ans.append(0)
return ans
1
2
3
4
5
6
7
8
9
10
11
12
13
impl Solution {
pubfnsum_zero(n: i32) -> Vec<i32> {
letmut ans = Vec::new();
for i in1..=n/2 {
ans.push(i);
ans.push(-i);
}
if n %2==1 {
ans.push(0);
}
ans
}
}