Advertisement
i_love_rao_khushboo

Untitled

Jan 6th, 2023
806
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<vector<int>> fourSum(vector<int>& nums, int target) {
  4.         int n = nums.size();
  5.  
  6.         sort(nums.begin(), nums.end());
  7.  
  8.         vector<vector<int>> res;
  9.  
  10.         for(int i = 0; i + 3 < n; i++) {
  11.             for(int j = i + 1; j + 2 < n; j++) {
  12.                 long long required = (long long)target - (nums[i] + nums[j]);
  13.  
  14.                 int L = j + 1, R = n - 1;
  15.  
  16.                 while(L < R) {
  17.                     long long sum = (long long)nums[L] + nums[R];
  18.                    
  19.                     if(sum > required) R -= 1;
  20.                     else if(sum < required) L += 1;
  21.                     else {
  22.                         vector<int> quadruple = {nums[i], nums[j], nums[L], nums[R]};
  23.                         res.push_back(quadruple);
  24.  
  25.                         while((L < R) and (nums[L] == nums[L + 1])) L += 1;
  26.                         while((R > L) and (nums[R] == nums[R - 1])) R -= 1;
  27.  
  28.                         L += 1;
  29.                         R -= 1;
  30.                     }
  31.                 }
  32.  
  33.                 while((j + 2 < n) and (nums[j] == nums[j + 1])) j += 1;
  34.             }
  35.  
  36.             while((i + 3 < n) and (nums[i] == nums[i + 1])) i += 1;
  37.         }
  38.  
  39.         return res;
  40.     }
  41. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement