LEEDCODE 506相对名字

LEEDCODE 506相对名字_第1张图片

class Solution {
public:
    vector<string> findRelativeRanks(vector<int>& score) {
        vector<int> a(score.size());
        for(int i = 0; i < score.size(); i++)
        {
            a[i] = score[i];
        }
        // quicksort
        int left = 0;
        int right = score.size()-1;
        
        quicksort(score, left, right);
        unordered_map<int, string> hashmap;
        // 有序 转 哈希 存储
        for(int i = 0; i < score.size(); i++)
        {
            if(i == 0)
            {
                hashmap[score[i]] = "Gold Medal";
                continue;

            }
            if(i == 1)
            {
                hashmap[score[i]] = "Silver Medal";
                continue;
            }
                
            if(i == 2)
            {
                hashmap[score[i]] = "Bronze Medal";
                continue;
            }
                
            hashmap[score[i]] = to_string(i+1);
        }

        // 输出
        vector<string> b;
        for(int i = 0; i < score.size(); i++)
        {
            b.push_back(hashmap[a[i]]);
        }

        return b;
    }
    void quicksort(vector<int>& score, int left, int right)
    {
        if(left >= right)
        {
            return;
        }
        int k = score[left];
        int start = left;
        int end = right;
        while(left<right)
        {
            while(score[right]<k && left<right)
            {
                right --;
            }
            score[left] = score[right];
            while(score[left]>k && left<right)
            {
                left ++;
            }
            score[right] = score[left];
        }
        score[left] = k;
        quicksort(score, start, left - 1);
        quicksort(score, left + 1, end);
    }
};

LEEDCODE 506相对名字_第2张图片

你可能感兴趣的:(开发语言,c++)