Skip to content

Commit

Permalink
Runtime: 300 ms, faster than 34.85% of JavaScript online submissions …
Browse files Browse the repository at this point in the history
…for 3Sum Closest.

Memory Usage: 44.8 MB, less than 51.09% of JavaScript online submissions for 3Sum Closest.
  • Loading branch information
masiiie committed Jul 17, 2022
1 parent 82e2b3b commit 81e7e64
Showing 1 changed file with 14 additions and 17 deletions.
31 changes: 14 additions & 17 deletions 3sum-closest.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,25 @@
* @param {number} target
* @return {number}
*/
var threeSumClosest = function(nums, target) {
var threeSumClosest = function(nums, target) {
nums.sort((a,b) => a-b)
let minDiff = target*Math.pow(10,4)
let answer = 0
let answer = Infinity

for(let i=0; i< nums.length; i++){
let left = i+1
let right = nums.length-1
if(i > 0 && nums[i] === nums[i-1]) continue
for(let i=0; i< nums.length - 2; i++){
if(i > 0 && nums[i] === nums[i-1]) continue
let left = i+1, right = nums.length-1
while(left < right){
let sum = nums[i] + nums[left] + nums[right]
const diff = Math.abs(target - sum)
const sum = nums[i] + nums[left] + nums[right];
if(sum == target) return target;

answer = Math.abs(target - sum) < Math.abs(target - answer) ? sum : answer;

if(diff < minDiff){
minDiff = diff
answer = sum
left++
while(nums[left] === nums[left-1] && left < right) left++
}else if(sum > 0){
right--
if(sum < target){
left++;
while(left < right && nums[left] === nums[left-1]) left++
}else{
left++
right--;
while(left < right && nums[right] === nums[right+1]) right--
}
}
}
Expand Down

0 comments on commit 81e7e64

Please sign in to comment.