题目:
题解:
题目说让我们返回一个由n个各不相同的整数组成的数组,相加为0。
这里的比较好的办法就是类似于 1 2 3 0 -3 -2 -1这样对称的数组。既满足要求,又好实现。
先calloc出一个容量为n的整型数组,定义两个变量(也可以认为是指针)left和right分别指向数组的两头。再定义一个 i 为赋值变量,每次循环后i++。
将arr[left]和arr[right]分别赋上相反的数,将left++,right--。以left<=right为循环的终止条件。如果n为奇数,将数组中间的那个数赋值为0。
int* sumZero(int n, int* returnSize)
{int* arr = (int*)calloc(n , (sizeof(int)));int left = 0;int right = n - 1;int i = 1;while (left <= right){arr[left] = i;arr[right] = -i;if (left == right){arr[left] = 0;break;}left++;right--;i++;}*returnSize = n;return arr;
}
本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!