代码拉取完成,页面将自动刷新
#define _CRT_SECURE_NO_WARNINGS 1
//移动0到后面,不能创建新数组,而且数组大小顺序不变
//1.非零归纳在前面,后面直接赋值为0
//void moveZeroes(int* nums, int numsSize) {
// int i = 0, j = 0;
// for (i = 0; i < numsSize; i++)
// {
// if (nums[i] != 0)
// {
// nums[j] = nums[i];
// j++;
// }
// }
// for (j; j < numsSize; j++)
// nums[j] = 0;
//}
////2.两个下标交换数值,i为被交换数,j为目标数(是否为0)
//void swap(int* a, int* b)
//{
// int temp = *a, * a = *b;
// *b = temp;
//}
//void moveZeroes(int* nums, int numsSize) {
// int i = 0, j =0;//j也要从下标0开始
// while (j < numsSize)
// {
// if (nums[j] != 0)
// {
// swap(nums + i, nums + j);
// i++;//换掉了的数字,下标就要后移,确保顺序不变
// }
// j++;
// }
//}
//
////求两数之和,返回下标+1,即从一开始的下标
//int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
// int i, j;
// int* a = (int*)malloc(sizeof(int) * 2);
// for (i = 0; i < numbersSize - 1; i++)
// {
// for (j = i + 1; j < numbersSize; j++)
// {
// if (numbers[i] + numbers[j] == target)
// {
// *returnSize = 2;
// a[0] = i + 1;
// a[1] = j + 1;
// return a;
// }
// }
// }
// *returnSize = 2;
// a[0] = -1;
// a[1] = -1;
// return a;
//}
////双下标,二分法,解法三直接双下标往中间遍历
//int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
// //两数是两个不同的数,不是同一个下标的
// *returnSize = 2;
// int* ret = (int*)malloc(sizeof(int) * 2);
// int i = 0;
// for (i = 0; i < numbersSize; i++)
// {
// int left = i + 1;
// int right = numbersSize - 1;
// while (left <= right)
// {
// int mid = (left + right) / 2;
// if (numbers[i] + numbers[mid] == target)
// {
// ret[0] = i + 1;
// ret[1] = mid + 1;
// return ret;
// }
// else if (numbers[i] + numbers[mid] > target)
// right = mid - 1;
// else
// left = mid + 1;
// }
// }
// ret[0] = ret[1] = -1;
// return ret;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。