Skip to content

Commit 0ac3a5b

Browse files
authored
Update README_EN.md
1 parent 3a51378 commit 0ac3a5b

File tree

1 file changed

+41
-50
lines changed

1 file changed

+41
-50
lines changed

solution/0000-0099/0015.3Sum/README_EN.md

Lines changed: 41 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -451,59 +451,50 @@ class Solution {
451451

452452
#### C
453453

454-
```C
455-
456-
int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; }
457-
458-
int **threeSum(int *nums, int numsSize, int *returnSize,
459-
int **returnColumnSizes) {
460-
*returnSize = 0;
461-
int capacity = 100;
462-
int **result = malloc(capacity * sizeof(int *));
463-
int *colSizes = malloc(capacity * sizeof(int));
464-
qsort(nums, numsSize, sizeof(int), cmp);
465-
466-
for (int i = 0; i < numsSize - 2; i++) {
467-
if (nums[i] > 0)
468-
break;
469-
if (i > 0 && nums[i] == nums[i - 1])
470-
continue;
471-
472-
int j = i + 1, k = numsSize - 1;
473-
while (j < k) {
474-
int sum = nums[i] + nums[j] + nums[k];
475-
if (sum < 0) {
476-
j++;
477-
} else if (sum > 0) {
478-
k--;
479-
} else {
480-
if (*returnSize >= capacity) {
481-
capacity *= 2;
482-
result = realloc(result, capacity * sizeof(int *));
483-
colSizes = realloc(colSizes, capacity * sizeof(int));
484-
}
454+
```c
455+
int cmp(const void* a, const void* b) {
456+
return *(int*) a - *(int*) b;
457+
}
485458

486-
result[*returnSize] = malloc(3 * sizeof(int));
487-
result[*returnSize][0] = nums[i];
488-
result[*returnSize][1] = nums[j];
489-
result[*returnSize][2] = nums[k];
490-
colSizes[*returnSize] = 3;
491-
(*returnSize)++;
492-
493-
j++;
494-
k--;
495-
while (j < k && nums[j] == nums[j - 1])
496-
j++;
497-
while (j < k && nums[k] == nums[k + 1])
498-
k--;
499-
}
500-
}
501-
}
459+
int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {
460+
*returnSize = 0;
461+
int cap = 1000;
462+
int** ans = (int**) malloc(sizeof(int*) * cap);
463+
*returnColumnSizes = (int*) malloc(sizeof(int) * cap);
502464

503-
*returnColumnSizes = colSizes;
504-
return result;
505-
}
465+
qsort(nums, numsSize, sizeof(int), cmp);
506466

467+
for (int i = 0; i < numsSize - 2 && nums[i] <= 0; ++i) {
468+
if (i > 0 && nums[i] == nums[i - 1]) continue;
469+
int j = i + 1, k = numsSize - 1;
470+
while (j < k) {
471+
int sum = nums[i] + nums[j] + nums[k];
472+
if (sum < 0) {
473+
++j;
474+
} else if (sum > 0) {
475+
--k;
476+
} else {
477+
if (*returnSize >= cap) {
478+
cap *= 2;
479+
ans = (int**) realloc(ans, sizeof(int*) * cap);
480+
*returnColumnSizes = (int*) realloc(*returnColumnSizes, sizeof(int) * cap);
481+
}
482+
ans[*returnSize] = (int*) malloc(sizeof(int) * 3);
483+
ans[*returnSize][0] = nums[i];
484+
ans[*returnSize][1] = nums[j];
485+
ans[*returnSize][2] = nums[k];
486+
(*returnColumnSizes)[*returnSize] = 3;
487+
(*returnSize)++;
488+
489+
++j;
490+
--k;
491+
while (j < k && nums[j] == nums[j - 1]) ++j;
492+
while (j < k && nums[k] == nums[k + 1]) --k;
493+
}
494+
}
495+
}
496+
return ans;
497+
}
507498
```
508499
509500
<!-- tabs:end -->

0 commit comments

Comments
 (0)