373. Find K Pairs with Smallest Sums
代码如下:
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *columnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** kSmallestPairs(int* nums1, int nums1Size, int* nums2, int nums2Size, int k, int** columnSizes, int* returnSize) {
if(nums1Size==0||nums2Size==0)
return NULL;
int** res;
res=(int**)malloc(sizeof(int*)*(k*k));
int count=0;
//columnSizes=(int**)malloc(sizeof(int*)*(k*k));
int m;
int n;
for(n=0;n<k&&n<nums1Size;n++)
{
for(m=0;m<k&&m<nums2Size;m++)
{
*(res+count)=(int*)malloc(sizeof(int)*2);
res[count][0]=nums1[n];
res[count][1]=nums2[m];
//printf("%d,%d,",res[count][0],res[count][1]);
//printf("A%d",**(columnSizes+count));
count++;
//**(columnSizes+count)=2;
}
}
int cmp(const void* a,const void* b)
{
int* A;
A=*(int*)a;
int* B;
B=*(int*)b;
int sumA=*A+*(A+1);
int sumB=*B+*(B+1);
//printf("%d,%d",sumA,sumB);
return sumA-sumB;
}
qsort(res,count,sizeof(int)*2,cmp);
*(columnSizes)=(int*)malloc(sizeof(int)*k);
for(int p=0;p<k;p++)
{
*(*(columnSizes)+p)=2;
}
if(k<count)
*returnSize=k;
else
*returnSize=count;
return res;
}
卧槽,写到心态炸裂,这个sb的columnSize尼玛不安套路出牌,给的是个二维指针,实际上用的是一维,真tm蠢。