-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThreeSumCloset.cpp
More file actions
55 lines (45 loc) · 1.91 KB
/
ThreeSumCloset.cpp
File metadata and controls
55 lines (45 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Given an integer array nums of length n and an integer target, find three integers in nums such that the sum is closest to target.
// Return the sum of the three integers.
// You may assume that each input would have exactly one solution.
// Example 1:
// Input: nums = [-1,2,1,-4], target = 1
// Output: 2
// Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
// Example 2:
// Input: nums = [0,0,0], target = 1
// Output: 0
// Constraints:
// 3 <= nums.length <= 1000
// -1000 <= nums[i] <= 1000
// -104 <= target <= 104
//Approach:
// o Creating a variable closetSum to store sum closest to target and store maximum value
// in this we have considered maximum to be 1e7 (max(nums[i])=e4 * max(nums.size()=1e3)) and not INT_MAX as to avoid integer overflow.
// o then iterate over the array and in each iteration consider two pointer approach to create sum variable equal to sum of iterate pointer and two pointers of two pointer approach.
// o Now consider two cases if this sum is equal to target return target as closest to target is target itself and if absolute value of difference of target and closest sum uptill
// now is greater than current difference of target sum then update the closest sum.
//Code:
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int n = nums.size();
int closetSum = 1e7;
for(int k=0;k<n-1;k++){
int i = k+1;
int j = n-1;
while(i<j){
int sum = nums[i] + nums[j] + nums[k];
if(sum==target)
return target;
if((long long)abs(target-closetSum)>(long long)abs(target-sum))
closetSum = sum;
if(sum < target)
i++;
else
j--;
}
}
return closetSum;
}
};