本文共 1140 字,大约阅读时间需要 3 分钟。
void sort(int *a, int left, int right){ if(left >= right) { return ; } int i = left; int j = right; int key = a[left]; while(i < j) { while(i < j && key <= a[j]) { j--; } a[i] = a[j]; while(i < j && key >= a[i]) { i++; } a[j] = a[i]; } a[i] = key; sort(a, left, i - 1); sort(a, i + 1, right);} int** threeSum(int* nums, int numsSize, int* returnSize) { sort(nums, 0, numsSize-1); int result = 0; int target = 0; int** rets = (int**)malloc(sizeof(int*)*numsSize*2); int index = 0; int is_exist = 0; for (int i=0; i< numsSize-2; ++i) { int j = i+1; int k = numsSize - 1; while(j < k){ result = nums[i]+nums[j]+nums[k]; if (result < target) { ++j; }else if (result > target) { --k; }else { for (int p=0; p< index; ++p) { if (rets[p][0] == nums[i]&&rets[p][1] == nums[j]) { is_exist = 1; break; } } if (is_exist == 0) { rets[index] = (int*)malloc(sizeof(int)*3); rets[index][0] = nums[i]; rets[index][1] = nums[j]; rets[index][2] = nums[k]; ++index; } is_exist = 0; --k; } } } *returnSize = index; return rets;}
转载地址:http://ooxkb.baihongyu.com/