解法一

答案比较开放,在0的左右两侧分别取数即可满足题意。

  1. class Solution {
  2. public int[] sumZero(int n) {
  3. int[] ans = new int[n];
  4. int mid = (n - 1) / 2;
  5. if (n % 2 == 1) {
  6. ans[mid] = 0;
  7. for (int i = 1; i <= n / 2; ++i) {
  8. ans[mid - i] = -i;
  9. ans[mid + i] = i;
  10. }
  11. } else {
  12. for (int i = 1; i <= n / 2; ++i) {
  13. ans[mid - i + 1] = -i;
  14. ans[mid + i] = i;
  15. }
  16. }
  17. return ans;
  18. }
  19. }