leetcode-350. 2つの配列の交差II-C言語

1072 ワード



/**
 *     :
 *             ,     。
 */

int min(int a, int b){
    return a < b ? a:b;
}

void swap_addr(int **a, int **b){
    int *c = *a; 
    *a = *b;
    *b = c;
}
void swap(int *a, int *b){
    int c = *a;
    *a = *b;
    *b = c;
}

int cmp(int *a, int *b){
    if(*a == *b) {
        return 0;
    }else if (*a < *b)
        return -1;
    else
        return 1;
}

int* intersect(int* arr1, int len1, int* arr2, int len2, int* returnSize){
    int j=0, cur_value1, cur_cnt1, cur_value2, cur_cnt2;
    int i=0, index=0, k, tmp1, tmp2;
    int *ret;    
    if(len1 < len2){
        swap_addr(&arr1, &arr2);
        swap(&len1, &len2);
    }
    
    ret = (int *)malloc(sizeof(int) * len1);
    
    qsort(arr1, len1, sizeof(int), cmp);
    qsort(arr2, len2, sizeof(int), cmp);
    
    i = 0;
    j = 0;
    
    while(i