File tree Expand file tree Collapse file tree 1 file changed +22
-18
lines changed Expand file tree Collapse file tree 1 file changed +22
-18
lines changed Original file line number Diff line number Diff line change 11class Solution {
22public:
33 int threeSumClosest (vector<int >& nums, int target) {
4- sort (nums.begin (), nums.end ());
54 int n = nums.size ();
6- int closestSum = nums[0 ] + nums[1 ] + nums[2 ];
5+
6+ sort (nums.begin (), nums.end ());
7+
8+
9+ int resultSum = nums[0 ] + nums[1 ] + nums[2 ];
10+ int minDiff = INT_MAX;
11+
12+ for (int i = 0 ; i < n - 2 ; i++) {
13+
14+ if (i > 0 && nums[i] == nums[i - 1 ]) continue ;
715
8- for (int i = 0 ; i < n - 2 ; i++) {
916 int j = i + 1 ;
1017 int k = n - 1 ;
18+ while (j < k) {
19+ int sum = nums[i] + nums[j] + nums[k];
1120
12- while (j < k) {
13- int currSum = nums[i] + nums[j] + nums[k];
14-
15-
16- if (abs (currSum - target) < abs (closestSum - target)) {
17- closestSum = currSum;
18- }
21+
22+ if (sum == target) return target;
23+ else if (sum < target) j++;
24+ else k--;
1925
26+ int diffToTarget = abs (sum - target);
2027
21- if (currSum < target) {
22- j++;
23- }
24- else {
25- k--;
28+ if (diffToTarget < minDiff) {
29+ resultSum = sum;
30+ minDiff = diffToTarget;
2631 }
2732 }
2833 }
29-
30- return closestSum;
34+ return resultSum;
3135 }
32- };
36+ };
You can’t perform that action at this time.
0 commit comments