/**
* Note: The returned array must be malloced, assume caller calls free().
*/
typedef struct n_t{
int val;
int cnt;
} Node;
int cmp(Node *a, Node *b){
return a->val - b->val;
}
double* sampleStats(int* arr, int len, int* returnSize){
int i;
double *ret = (double *)malloc(sizeof(double) * 5);
Node n[1024];
int index = 0, min=INT_MAX, max=INT_MIN, num_cnt=0;
double cnt=0 ;
//qsort(arr, len, sizeof(int), cmp);
memset(n, 0, sizeof(n));
for(i=0; i<len; i++){
if(arr[i]){
n[index].val = i;
n[index++].cnt = arr[i];
cnt += arr[i]*i;
num_cnt += arr[i];
}
}
qsort(n, index, sizeof(Node), cmp);
int max_cnt = 0, value = 0;
int left1 = (num_cnt-1)/2;
int left2 = num_cnt/2;
int left =0;
int tmp;
ret[3] = 0;
printf("left1 = %d, left2= %d\n", left1, left2);
int f1=1, f2=1;
for(i=0; i<index; i++){
tmp = n[i].cnt;
left += tmp;
if(left >= left1 + 1 && f1){
f1 = 0;
ret[3] += n[i].val;
}
if(left >= left2 + 1 && f2){
f2 = 0;
ret[3] += n[i].val;
}
if(n[i].cnt > max_cnt){
max_cnt = n[i].cnt;
value = n[i].val;
}
}
ret[0] = n[0].val;
ret[1] = n[index-1].val;
ret[2] = cnt / num_cnt;
ret[3] /= 2;
ret[4] = value;
*returnSize = 5;
return ret;
}
leetcode-1093. 大样本统计-C语言
最新推荐文章于 2023-03-10 10:42:21 发布