求:
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明:
返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入: numbers = [2, 7, 11, 15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。
解:
int
* twoSum(
int
* nums,
int
numsSize,
int
target,
int
* returnSize){
int
index1=
0
;
int
index2=numsSize-
1
;
while
(index1!=index2){
if
(nums[index1]+nums[index2]==target){
*returnSize =
2
;
int
* returnArr = (
int
*)malloc(
sizeof
(
int
)*
2
);
returnArr[
0
] = index1+
1
;
returnArr[
1
] = index2+
1
;
return
returnArr;
}
else
if
(nums[index1]+nums[index2]<target){
++index1;
}
else
{
--index2;
}
}
*returnSize =
0
;
return
0
;
};
来源:oschina
链接:https://my.oschina.net/u/4469818/blog/3191724