Ejemplo n.º 1
0
 vector<vector<int> > threeSum(vector<int> &num) {
     sort(num.begin(), num.end());
     vector<vector<int> > result;
     for (int i = 0; i < num.size(); ++i) {
         if (i > 0 && num[i] == num[i - 1]) continue;
         vector<vector<int> > p = twoSumSorted(num, i + 1, num.size() - 1, -num[i]);
         for (int j = 0; j < p.size(); ++j) {
             p[j].insert(p[j].begin(), num[i]);
             result.push_back(p[j]);
         }
     }
     return result;
 }
Ejemplo n.º 2
0
	vector<int> twoSum(vector<int>& nums, int target) {
		vector<int> nums1 = nums;
		std::sort(nums1.begin(), nums1.end(), less<int>());

		vector<int> tmp = twoSumSorted(nums1, target);
		vector<int> ret(2, -1);
		bool flag = false;
		for (int i_ = 0; i_ < nums.size(); ++i_){
			if (nums[i_] == tmp[0] && !flag) { ret[0] = i_ + 1; flag = true; }
			else if (nums[i_] == tmp[1]) { ret[1] = i_ + 1; }
		}
		
		if(ret[0] > ret[1]) swap(ret[0], ret[1]);
		return ret;
	}