रिश्तेदार रैंक Leetcode समाधान


कठिनाई स्तर आसान
में अक्सर पूछा गूगल
छंटाई

समस्या सापेक्ष रैंक Leetcode Solution हमें एक सदिश या सापेक्ष रैंकों का प्रतिनिधित्व करने वाले तार की एक सरणी वापस करने के लिए कहता है। हम एक साथ प्रदान की जाती हैं सरणी यह एथलीटों द्वारा प्राप्त स्कोर का प्रतिनिधित्व करता है। फिर हम रैंक देने के लिए दिए गए स्कोर एरे का उपयोग करते हैं। शीर्ष 3 उम्मीदवारों के लिए एक छोटा सा बदलाव है। इसके बजाय उन्हें सरल संख्या 1, 2, या 3. असाइन करने के लिए हमें स्वर्ण, रजत और कांस्य पदक प्रदान करने की आवश्यकता है। शीर्ष 3 उम्मीदवारों के अलावा, हम उन्हें 4 से n तक सरल संख्या प्रदान कर सकते हैं। आइए कुछ उदाहरणों पर एक नज़र डालते हैं।

रिश्तेदार रैंक Leetcode समाधान

[1, 2, 3]
["Bronze Medal", "Silver Medal", "Gold Medal"]

स्पष्टीकरण: चूंकि दिए गए सरणी एथलीटों द्वारा प्राप्त अंकों का प्रतिनिधित्व करते हैं। सर्वोच्च अंक वाले एथलीट को गोल्ड मेडल और इसके बाद दिया जाएगा। इस प्रकार हमने एथलीट को 3 के स्कोर के साथ गोल्ड मेडल, 2 के स्कोर के साथ एथलीट को सिल्वर मेडल और 1 के स्कोर के साथ एथलीट को ब्रॉन्ज मेडल दिया।

[5, 4, 3, 2, 1]
["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]

स्पष्टीकरण: चूंकि शीर्ष 3 उम्मीदवारों को पदक से सम्मानित किया जाता है और बाकी उम्मीदवारों को एक रैंक दिया जाता है। इस प्रकार हमने शीर्ष 3 उम्मीदवारों को पदक दिए हैं, और रैंक 4, और 5 को संबंधित उम्मीदवारों को सौंपा है।

दृष्टिकोण

समस्या सापेक्ष रैंक Leetcode Solution हमें शीर्ष 3 उम्मीदवारों को पदक प्रदान करने और बाकी उम्मीदवारों को रैंक प्रदान करने के लिए कहता है। सबसे सरल बात यह है कि दिए गए अनुक्रम को क्रमबद्ध करना है। लेकिन हमें रैंक को मूल सूचकांकों को सौंपने की आवश्यकता है। इसलिए, यदि हम दिए गए अनुक्रम को सीधे क्रमबद्ध करते हैं, तो हम मूल सूचकांकों को याद करेंगे। और रैंकों को आवंटित करने का निर्णय लेने में सक्षम नहीं होगा। इस प्रकार यह सुनिश्चित करने के लिए कि हम मूल सूचकांक नहीं खोते हैं, हम एक नया वेक्टर या सरणी बनाते हैं जो मूल सूचकांकों को स्कोर के साथ संग्रहीत करता है। हम इस नए सरणी या वेक्टर को सॉर्ट करते हैं। छँटाई के बाद, हम केवल संबंधित उम्मीदवारों को स्वर्ण, रजत और कांस्य पदक प्रदान करते हैं और योग्य उम्मीदवारों को 4 से n तक रैंक देते हैं। हम ऐसा कर सकते हैं क्योंकि जब हम अपने नए संशोधित सरणी या वेक्टर को सॉर्ट करते हैं, तो मूल सूचकांक भी संग्रहीत पदों के अनुरूप अपनी स्थिति को स्वैप करते हैं।

रिलेटिव रैंक के लिए कोड Leetcode Solution

सी + + रिलेटिव रैंक के लिए कोड Leetcode Solution

#include <bits/stdc++.h>
using namespace std;

vector<string> findRelativeRanks(vector<int>& nums) {
    vector<pair<int,int>> temp;
    int n = nums.size();
    for(int i=0;i<n;i++){
        temp.push_back(make_pair(nums[i], i));
    }
    sort(temp.rbegin(), temp.rend());
    vector<string> answer(n);
    answer[temp[0].second] = "Gold Medal";
    if(n>=2){
        answer[temp[1].second] = "Silver Medal";
    }
    if(n>=3){
        answer[temp[2].second] = "Bronze Medal";
    }
    for(int i=3;i<n;i++)
        answer[temp[i].second] = to_string(i+1);
    return answer;
}

int main(){
    vector<int> nums = {5, 4, 3, 2, 1};
    vector<string> answer = findRelativeRanks(nums);
    for(auto x: answer)cout<<x<<" ";
}
Gold Medal Silver Medal Bronze Medal 4 5

जावा कोड रिलेटिव रैंक लेकोडकोड सॉल्यूशन

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution {
  
    public static String[] findRelativeRanks(int[] nums) {
        int n = nums.length;
        int[][] pair = new int[nums.length][2];
        for (int i = 0; i < n; i++) {
            pair[i][0] = nums[i];
            pair[i][1] = i;
        }
        
        Arrays.sort(pair, (a, b) -> (b[0] - a[0]));
        
        String[] result = new String[nums.length];
        result[pair[0][1]] = "Gold Medal";
        if(n>=2)
            result[pair[1][1]] = "Silver Medal";
        if(n>=3)
            result[pair[2][1]] = "Bronze Medal";
        for (int i = 3; i < nums.length; i++) {
            result[pair[i][1]] = Integer.toString(i+1);
        }

        return result;
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    int[] nums = {5, 4, 3, 2, 1};
    String[] answer = findRelativeRanks(nums);
    for(int i=0;i<5;i++)
      System.out.print(answer[i] + " ");
  }
}
Gold Medal Silver Medal Bronze Medal 4 5

जटिलता विश्लेषण

समय जटिलता

O (NlogN), क्योंकि छँटाई के लिए O (NlogN) समय की आवश्यकता होती है, जहाँ N, तत्वों आयनों की संख्या सदिश या सरणी को क्रमबद्ध करता है।

अंतरिक्ष जटिलता

O (NlogN), चूँकि हमने O (NlogN) स्थान को छाँटने में उपयोग किया है। अंतरिक्ष जटिलता भी समय जटिलता के समान है।