/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** findDifference(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize, int** returnColumnSizes){
int r1,r2,i,j;
int temp;
r1 = 0;
r2 = 0;
int **a = (int **)malloc(sizeof(int *) * 2);
a[0] = (int *)malloc(nums1Size * sizeof(int));
a[1] = (int *)malloc(nums2Size * sizeof(int));
*returnColumnSizes = (int *)malloc(2 * sizeof(int));
for(i = 0; i < nums1Size; i++){
for(j = 0; j < nums1Size; j++){
if(nums1[i] == nums1[j] && i != j){
nums1[j] = 1001;
}
}
}
for(i = 0; i < nums2Size; i++){
for(j = 0; j < nums2Size; j++){
if(nums2[i] == nums2[j] && i != j){
nums2[j] = 1001;
}
}
}
for(i = 0; i < nums1Size; i++){
temp = nums1[i];
for(j = 0; j < nums2Size; j++){
if(temp == nums2[j]){
nums1[i] = 1001;
nums2[j] = 1001;
}
}
}
i = 0;
j = 0;
while(i < nums1Size){
if(nums1[i] != 1001){
a[0][j++] = nums1[i++];
r1++;
} else {
i++;
}
}
i = 0;
j = 0;
while(i < nums2Size){
if(nums2[i] != 1001){
a[1][j++] = nums2[i++];
r2++;
} else {
i++;
}
}
(*returnColumnSizes)[0] = r1;
(*returnColumnSizes)[1] = r2;
*returnSize = 2;
return a;
}
|