Skip to content

Commit aec2dea

Browse files
authored
Update Solution.c
1 parent 150749f commit aec2dea

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
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+
}
34

45
int threeSumClosest(int* nums, int numsSize, int target) {
56
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) {
99
int j = i + 1, k = numsSize - 1;
1010
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;
1422
}
15-
if (sum < target)
16-
j++;
17-
else
18-
k--;
1923
}
2024
}
21-
22-
return closest;
25+
return ans;
2326
}

0 commit comments

Comments
 (0)