【leetcode】数据流中的第K大元素
typedef struct { int k; int* nums; } KthLargest; int cmp(const void* a, const void* b){ return *(int*)b - *(int*)a; } KthLargest* kthLargestCreate(int k, int* nums, int numsSize) { KthLargest* obj = (KthLargest*)malloc(sizeof(KthLargest)); obj->k=k; obj->nums = (int*)calloc(k,sizeof(int)); if(numsSize) { qsort(nums,numsSize,sizeof(int),cmp); memcpy(obj->nums,nums,((numsSize<k)?numsSize:k)*sizeof(int)); } if(numsSize < obj->k) obj->nums[obj->k-1] = -2147483648; return obj; } int kthLargestAdd(KthLargest* obj, int val) { for (int i=obj->k-1; i>=0; i--) { if (val > obj->nums[i]) { if(i != obj->k-1) obj->nums[i+1] = obj->nums[i]; obj->nums[i]=val; } else break; } return obj->nums[obj->k-1]; } void kthLargestFree(KthLargest* obj) { free(obj); }