您的位置:首页 > 其它

167. Two Sum II - Input array is sorted

2017-09-13 16:04 507 查看
原文题目:

167. Two Sum II - Input array is sorted

读题:

给定一个升序序列,找到两个数加起来等于目标值,并输出索引,注意这里的索引是从1开始的

解题思路:

由于是升序,因此,可以用p指向第一个元素,用q指向最后一个元素,然后判断p和q所指的数加起来是否为目标值,找到则返回,若小于目标值,则p++,若大于目标值,则q++

class Solution
{
public:
vector<int> twoSum(vector<int>& numbers, int target)
{
vector <int> result;
int i = 0;
//输入保证一定有解,因此不需要考虑numbers的长度小于2的情况,否则这里j就成负数了
int j = numbers.size() - 1;
while(i!=j)
{
if(numbers[i] + numbers[j] == target)
{
result.push_back(i+1);
result.push_back(j+1);
break;
}
else if (numbers[i] + numbers[j] > target)
{
j--;
}
else
{
i++;
}
}
return result;

}
};

int main()
{
vector <int> result;
vector <int> numbers;
Solution s;
numbers.push_back(2);
numbers.push_back(7);
numbers.push_back(11);
numbers.push_back(15);

int target = 9;
int i = 0;
result = s.twoSum(numbers,target);
for(i = 0; i < result.size();i++)
{
cout << result[i]<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: