167. Two Sum II

来源:互联网 发布:淘宝微淘公布在哪里看 编辑:程序博客网 时间:2024/06/17 09:43

原文题目:

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;}}


原创粉丝点击