#include bool cmp(const pair& a, const pair& b) { return a.first < b.first; } class Solution { public: vector twoSum(vector& nums, int target) { int len = nums.size(); vector< pair > vp; for (int i = 0; i < len; i++) { vp.push_back(std::make_pair(nums[i], i)); } sort(vp.begin(), vp.end(), cmp); int L = 0; int R = len - 1; while (L < R) { int sum = vp[L].first + vp[R].first; if (sum == target) { vector v; v.push_back(vp[L].second); v.push_back(vp[R].second); return v; } else if (sum < target) { L++; } else if (sum > target) { R--; } } } };