题目:
给定一个目标值 target,请你在不包含重复元素的按升序排列的整数数组 a中,找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。
例如:给定 a= [2, 7, 10, 15], target = 17,因为 a[1] + a[2] = 7 + 10 = 17,所以返回 [1 2]
①可用暴力搜索,时间复杂度高
②双指针算法
前提:1、数组有序(题目中已确定为升序排列)
2、两个指针的移动有单调性
指针i位于数组开头,j位于结尾处,令i,j不断向中间逼近即可
主要代码:
for(i=0,j=n-1;i<j;i++)
{
while(v[i]+v[j]>target&&j>i)j--;
if(v[i]+v[j]==target)
{
cout<<i<<" "<<j;
break;
}
}