/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
int left=0,right=numbersSize-1;//定义双指针
int *result=(int*)malloc(sizeof(int)*2);//定义指针数组动态分布内存
*returnSize=2;//返回的两个下标长度为2
while(left<right)
{
int sum=numbers[left]+numbers[right];
if(sum==target)//两个元素之和等于目标值
{
result[0]=left+1;
result[1]=right+1;
return result;
}
else if(sum>target)
{
right--;//两个元素之和大于目标值,则将右侧指针左移一位
}
else
{
left++;//两个元素之和小于目标值,则将左侧指针右移一位
}
}
return result;
}
当我们需要执行指定循环次数的时候推荐用for,
如果是按照条件执行循环的话建议用while