hello!又见面啦~~~
一道习题,要长脑子了......
【. - 力扣(LeetCode)】
【思路】
/*** Note: The returned array must be malloced, assume caller calls free().*/void Bubble_sort(int arr[], int size) {int temp;for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - 1 - i; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
int* findErrorNums(int* nums, int numsSize, int* returnSize) {Bubble_sort(nums, numsSize);int* result = (int*)malloc(sizeof(int) * 2);int duplicate = 0, missing = 0;// 查找重复的数字for (int i = 0; i < numsSize - 1; i++) {if (nums[i] == nums[i + 1]) {duplicate = nums[i];break;}}// 计算总和int expectedSum = (numsSize * (numsSize + 1)) / 2;int actualSum = 0;for (int i = 0; i < numsSize; i++) {actualSum += nums[i];}// 通过公式计算丢失的数字missing = expectedSum - (actualSum - duplicate);result[0] = duplicate; // 重复的数字result[1] = missing; // 丢失的数字*returnSize = 2;return result;
}
【注意】:返回的 result 得是 malloc 开辟的一块空间,同时 *returnSize 等于 result 里面有效数据的个数。
【总结】:菜了,想不到公式法算缺失的数据。
继续干!
分享一首歌~~~
我亲爱的_谭维维_高音质在线试听_我亲爱的歌词|歌曲下载_酷狗音乐
至此结束!
我是云边有个稻草人
期待与你的下一次相遇——