要求:将数组中的零元素全部移动到数组末位,并保持其他元素在数组中的排序不变。
void moveZeroes(int* nums, int numsSize){
if(numsSize<=1){
return;
} //当数组长度为1时,不需要移动数据
int sentry=0; //定义一个变量,用来计数数组中非零元素的数量
for(int i=0;i<numsSize;i++){
if(nums[i]!=0){
nums[sentry]=nums[i];
sentry++; //每有一个非零元素,sentry+1
}
}
for(int i=sentry;i<numsSize;i++){
nums[sentry]=0; //之后的元素均为零元素,赋值即可
sentry++;
}
}
LeetCode:
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
*returnSize=2; //声明返回数组的区间大小
int *ans=(int *)malloc(2*sizeof(int)); //声明返回的结果数组
int low=0; //小数从零位开始查找
int high=numbersSize-1; //大数从末位开始查找
while(low<high){ //小数位小于大数数位
int sum=numbers[low]+numbers[high]; //两数之和
if(sum==target){
ans[0]=low+1;
ans[1]=high+1;
return ans; //若相等,返回数组
}
else if(sum<target){ //若两数之和小于所比较值,low右移
low++;
}
else
high--; //若大于,high左移
}
ans[0]=-1;
ans[1]=-1;
return ans;
}