OJ练习题:数组大小减半(1338)- minSetSize

    技术2022-07-13  97

    int CmpInt(const void* a, const void* b) {     return *(int*)b - *(int*)a; // 升序排列 }

    typedef struct  {     int id;     int rating; }NodeInfor;

    int minSetSize(int* arr, int arrSize) {     int * cntList = 0;     int cntNum = 0;     int rtVal = 0;     int i = 0;     int cnt = 0;     int preVal = 0;

        qsort(arr, arrSize, sizeof(int), CmpInt);

        cntList = malloc(sizeof(int) * arrSize);

        preVal = arr[0];     cnt = 1;     for(i = 1; i < arrSize; i++)     {         if(arr[i] == preVal)         {             cnt++;         }         else         {             cntList[cntNum++] = cnt;             cnt = 1;         }

            preVal = arr[i];     }     cntList[cntNum++] = cnt;

        qsort(cntList, cntNum, sizeof(int), CmpInt);

        cnt = 0;     for(i = 0; i < cntNum; i++)     {         cnt += cntList[i];         if(cnt >= (arrSize / 2))         {             break;         }     }

        rtVal = i + 1;

        free(cntList);          return rtVal; }

    Processed: 0.011, SQL: 9