来源:力扣
题目描述:
给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。
对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。
请按身高 降序 顺序返回对应的名字数组 names 。
本质就是排序。先创建一个结构体,包含两个元素:人的名字和身高。将原来分开的两个数组名字和身高存储到结构体数组,再对结构体按照身高的降序进行快排,存储名字返回即可。
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
typedef struct{
char *name;
int height;
}people;
int cmp(const void *a,const void *b)
{
return (*(people*)a).height<(*(people*)b).height;
}
people ans[1010];
char ** sortPeople(char ** names, int namesSize, int* heights, int heightsSize, int* returnSize){
*returnSize=heightsSize;
char **reans=(char**)malloc(sizeof(char*)*heightsSize);
for(int i=0;i<heightsSize;++i)
ans[i].name=names[i],ans[i].height=heights[i];
qsort(ans,heightsSize,sizeof(people),cmp);
for(int i=0;i<heightsSize;++i)
reans[i]=ans[i].name;
return reans;
}