File tree Expand file tree Collapse file tree 1 file changed +17
-14
lines changed
solution/0000-0099/0016.3Sum Closest Expand file tree Collapse file tree 1 file changed +17
-14
lines changed Original file line number Diff line number Diff line change 1
-
2
- int cmp (const void * a , const void * b ) { return * (int * ) a - * (int * ) b ; }
1
+ int cmp (const void * a , const void * b ) {
2
+ return (* (int * ) a - * (int * ) b );
3
+ }
3
4
4
5
int threeSumClosest (int * nums , int numsSize , int target ) {
5
6
qsort (nums , numsSize , sizeof (int ), cmp );
6
- int closest = nums [0 ] + nums [1 ] + nums [2 ];
7
-
8
- for (int i = 0 ; i < numsSize - 2 ; i ++ ) {
7
+ int ans = 1 << 30 ;
8
+ for (int i = 0 ; i < numsSize ; ++ i ) {
9
9
int j = i + 1 , k = numsSize - 1 ;
10
10
while (j < k ) {
11
- int sum = nums [i ] + nums [j ] + nums [k ];
12
- if (abs (sum - target ) < abs (closest - target )) {
13
- closest = sum ;
11
+ int t = nums [i ] + nums [j ] + nums [k ];
12
+ if (t == target ) {
13
+ return t ;
14
+ }
15
+ if (abs (t - target ) < abs (ans - target )) {
16
+ ans = t ;
17
+ }
18
+ if (t > target ) {
19
+ -- k ;
20
+ } else {
21
+ ++ j ;
14
22
}
15
- if (sum < target )
16
- j ++ ;
17
- else
18
- k -- ;
19
23
}
20
24
}
21
-
22
- return closest ;
25
+ return ans ;
23
26
}
You can’t perform that action at this time.
0 commit comments