@@ -8,8 +8,8 @@ static int compare(const void *a, const void *b)
88 return * (int * ) a - * (int * ) b ;
99}
1010
11- static void k_sum (int * nums , int low , int high , int target , int total , int k ,
12- int * stack , int len , int * * results , int * count , int * col_sizes )
11+ static void k_sum (int * nums , int low , int high , long target , int total , int k ,
12+ int * stack , int len , int * * results , int * count )
1313{
1414 int i ;
1515 if (k == 2 ) {
@@ -24,7 +24,6 @@ static void k_sum(int *nums, int low, int high, int target, int total, int k,
2424 stack [len ++ ] = nums [high ];
2525 results [* count ] = malloc (total * sizeof (int ));
2626 memcpy (results [* count ], stack , total * sizeof (int ));
27- col_sizes [* count ] = total ;
2827 (* count )++ ;
2928 len -= 2 ;
3029 while (++ low < high && nums [low ] == nums [low - 1 ]) {}
@@ -36,7 +35,8 @@ static void k_sum(int *nums, int low, int high, int target, int total, int k,
3635 for (i = low ; i <= high - k + 1 ; i ++ ) {
3736 if (i > low && nums [i ] == nums [i - 1 ]) continue ;
3837 stack [len ] = nums [i ];
39- k_sum (nums , i + 1 , high , target - nums [i ], 4 , k - 1 , stack , len + 1 , results , count , col_sizes );
38+ k_sum (nums , i + 1 , high , target - nums [i ], 4 , k - 1 , stack ,
39+ len + 1 , results , count );
4040 }
4141 }
4242}
@@ -49,15 +49,20 @@ static void k_sum(int *nums, int low, int high, int target, int total, int k,
4949int * * fourSum (int * nums , int numsSize , int target , int * returnSize , int * * returnColumnSizes )
5050{
5151 * returnSize = 0 ;
52- int i , j , capacity = 50000 ;
52+ int i , capacity = 50000 ;
5353 int * * results = malloc (capacity * sizeof (int * ));
54- * returnColumnSizes = malloc (capacity * sizeof (int ));
5554
5655 if (numsSize >= 4 ) {
5756 qsort (nums , numsSize , sizeof (* nums ), compare );
5857 int * stack = malloc (4 * sizeof (int ));
59- k_sum (nums , 0 , numsSize - 1 , target , 4 , 4 , stack , 0 , results , returnSize , * returnColumnSizes );
58+ k_sum (nums , 0 , numsSize - 1 , target , 4 , 4 , stack , 0 , results , returnSize );
6059 }
60+
61+ * returnColumnSizes = malloc (capacity * sizeof (int ));
62+ for (i = 0 ; i < * returnSize ; i ++ ) {
63+ (* returnColumnSizes )[i ] = 4 ;
64+ }
65+
6166 return results ;
6267}
6368
0 commit comments