leetcode:506. 相对名次

简介: leetcode:506. 相对名次

一、题目

 

函数原型:char** findRelativeRanks(int* score, int scoreSize, int* returnSize)

二、思路

创建一个新的数组newscore,将原数组数据拷贝到新数组,降序排序新数组。

遍历原数组,在新数组中找到原数组中数据在新数组中的位置,该位置即表示名次。

将对应的名词信息填入字符串数组中即可。

三、代码

int cmp(const void* e1, const void* e2)
{
    return *(int*)e2 - *(int*)e1;
}
char** findRelativeRanks(int* score, int scoreSize, int* returnSize) {
    *returnSize = scoreSize;
    int* newscore = (int*)malloc(sizeof(int) * scoreSize);//新数组
    for (int k = 0; k < scoreSize; k++)//将原数组数据拷贝到新数组
    {
        newscore[k] = score[k];
    }
    qsort(newscore, scoreSize, sizeof(int), cmp);//排序新数组(降序)
    char** ans = (char**)malloc(sizeof(char*) * scoreSize);//字符串数组
    for (int j = 0; j < scoreSize; j++)//遍历原数组
    {
        for (int i = 0; i < scoreSize; i++)//在新数组中查找原数组数据的位置
        {
            if (score[j] == newscore[i])
            {
                ans[j] = (char*)malloc(sizeof(char) * 13);//申请字符串空间
                memset(ans[j], 0, sizeof(char) * 13);
                switch (i + 1)
                {
                case 1:ans[j] = "Gold Medal";
                    break;
                case 2:ans[j] = "Silver Medal";
                    break;
                case 3:ans[j] = "Bronze Medal";
                    break;
                default:sprintf(ans[j], "%d", i + 1);
                    break;
                }
                break;
            }
        }
    }
    return ans;
}


目录
相关文章
|
6月前
leetcode-506:相对名次
leetcode-506:相对名次
61 0
【Leetcode -1609.奇偶树 -1122.数组的相对排序】
【Leetcode -1609.奇偶树 -1122.数组的相对排序】
44 0
【Leetcode -506.相对名次 -507.完美数】
【Leetcode -506.相对名次 -507.完美数】
52 0
|
索引
力扣 506.相对名词 纯C解法
力扣 506.相对名词 纯C解法
【每日一题】力扣剑指 Offer II 075. 数组相对排序
【每日一题】力扣剑指 Offer II 075. 数组相对排序
【每日一题】力扣剑指 Offer II 075. 数组相对排序
|
索引
力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次
力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次
106 0
力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次
LeetCode 1122. 数组的相对排序
给你两个数组,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。
103 0
【Day 01】力扣(LeetCode)每日一刷[506.相对名次][264.丑数][23.合并N个升序链表]
每日一刷[506.相对名次][264.丑数][23.合并N个升序链表]。
106 0
【Day 01】力扣(LeetCode)每日一刷[506.相对名次][264.丑数][23.合并N个升序链表]