File tree 3 files changed +139
-0
lines changed
solution/0000-0099/0016.3Sum Closest
3 files changed +139
-0
lines changed Original file line number Diff line number Diff line change @@ -114,6 +114,54 @@ class Solution {
114
114
}
115
115
```
116
116
117
+ ### ** JavaScript**
118
+
119
+ ``` js
120
+ /**
121
+ * @param {number[]} nums
122
+ * @param {number} target
123
+ * @return {number}
124
+ */
125
+ var threeSumClosest = function (nums , target ) {
126
+ let len = nums .length ;
127
+ nums .sort ((a , b ) => a - b);
128
+ let diff = Infinity ;
129
+ let res;
130
+ for (let i = 0 ; i < len - 2 ; i++ ) {
131
+ if (i > 0 && nums[i] === nums[i - 1 ]) continue ;
132
+ let left = i + 1 , right = len - 1 ;
133
+ let cur = nums[i] + nums[i + 1 ] + nums[i + 2 ];
134
+ if (cur > target) {
135
+ let newDiff = Math .abs ((cur - target))
136
+ if (newDiff < diff) {
137
+ diff = newDiff;
138
+ res = cur;
139
+ }
140
+ break ;
141
+ }
142
+ while (left < right) {
143
+ cur = nums[i] + nums[left] + nums[right];
144
+ if (cur === target) return target;
145
+ let newDiff = Math .abs ((cur - target))
146
+ if (newDiff < diff) {
147
+ diff = newDiff;
148
+ res = cur;
149
+ }
150
+ if (cur < target) {
151
+ while (nums[left] === nums[left + 1 ]) left++ ;
152
+ left++ ;
153
+ continue ;
154
+ } else {
155
+ while (nums[right] === nums[right - 1 ]) right-- ;
156
+ right-- ;
157
+ continue ;
158
+ }
159
+ }
160
+ }
161
+ return res;
162
+ };
163
+ ```
164
+
117
165
### ** ...**
118
166
119
167
```
Original file line number Diff line number Diff line change @@ -103,6 +103,54 @@ class Solution {
103
103
}
104
104
```
105
105
106
+ ### ** JavaScript**
107
+
108
+ ``` js
109
+ /**
110
+ * @param {number[]} nums
111
+ * @param {number} target
112
+ * @return {number}
113
+ */
114
+ var threeSumClosest = function (nums , target ) {
115
+ let len = nums .length ;
116
+ nums .sort ((a , b ) => a - b);
117
+ let diff = Infinity ;
118
+ let res;
119
+ for (let i = 0 ; i < len - 2 ; i++ ) {
120
+ if (i > 0 && nums[i] === nums[i - 1 ]) continue ;
121
+ let left = i + 1 , right = len - 1 ;
122
+ let cur = nums[i] + nums[i + 1 ] + nums[i + 2 ];
123
+ if (cur > target) {
124
+ let newDiff = Math .abs ((cur - target))
125
+ if (newDiff < diff) {
126
+ diff = newDiff;
127
+ res = cur;
128
+ }
129
+ break ;
130
+ }
131
+ while (left < right) {
132
+ cur = nums[i] + nums[left] + nums[right];
133
+ if (cur === target) return target;
134
+ let newDiff = Math .abs ((cur - target))
135
+ if (newDiff < diff) {
136
+ diff = newDiff;
137
+ res = cur;
138
+ }
139
+ if (cur < target) {
140
+ while (nums[left] === nums[left + 1 ]) left++ ;
141
+ left++ ;
142
+ continue ;
143
+ } else {
144
+ while (nums[right] === nums[right - 1 ]) right-- ;
145
+ right-- ;
146
+ continue ;
147
+ }
148
+ }
149
+ }
150
+ return res;
151
+ };
152
+ ```
153
+
106
154
### ** ...**
107
155
108
156
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @param {number } target
4
+ * @return {number }
5
+ */
6
+ var threeSumClosest = function ( nums , target ) {
7
+ let len = nums . length ;
8
+ nums . sort ( ( a , b ) => a - b ) ;
9
+ let diff = Infinity ;
10
+ let res ;
11
+ for ( let i = 0 ; i < len - 2 ; i ++ ) {
12
+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
13
+ let left = i + 1 , right = len - 1 ;
14
+ let cur = nums [ i ] + nums [ i + 1 ] + nums [ i + 2 ] ;
15
+ if ( cur > target ) {
16
+ let newDiff = Math . abs ( ( cur - target ) )
17
+ if ( newDiff < diff ) {
18
+ diff = newDiff ;
19
+ res = cur ;
20
+ }
21
+ break ;
22
+ }
23
+ while ( left < right ) {
24
+ cur = nums [ i ] + nums [ left ] + nums [ right ] ;
25
+ if ( cur === target ) return target ;
26
+ let newDiff = Math . abs ( ( cur - target ) )
27
+ if ( newDiff < diff ) {
28
+ diff = newDiff ;
29
+ res = cur ;
30
+ }
31
+ if ( cur < target ) {
32
+ while ( nums [ left ] === nums [ left + 1 ] ) left ++ ;
33
+ left ++ ;
34
+ continue ;
35
+ } else {
36
+ while ( nums [ right ] === nums [ right - 1 ] ) right -- ;
37
+ right -- ;
38
+ continue ;
39
+ }
40
+ }
41
+ }
42
+ return res ;
43
+ } ;
You can’t perform that action at this time.
0 commit comments