సాపేక్ష ర్యాంకులు లీట్‌కోడ్ పరిష్కారం


కఠినత స్థాయి సులువు
తరచుగా అడుగుతుంది గూగుల్
సార్టింగ్

సాపేక్ష ర్యాంకుల సమస్య లీట్‌కోడ్ సొల్యూషన్ సాపేక్ష ర్యాంకులను సూచించే వెక్టర్ లేదా తీగలను తిరిగి ఇవ్వమని అడుగుతుంది. మాకు ఒక అందించబడింది అమరిక అది అథ్లెట్లు పొందిన స్కోర్‌ను సూచిస్తుంది. అప్పుడు మేము ర్యాంకులను కేటాయించడానికి ఇచ్చిన స్కోరు శ్రేణిని ఉపయోగిస్తాము. టాప్ 3 అభ్యర్థులకు చిన్న మార్పు ఉంది. 1, 2, లేదా 3 అనే సాధారణ సంఖ్యలను కేటాయించడానికి బదులుగా, మేము బంగారం, వెండి మరియు కాంస్య పతకాన్ని కేటాయించాలి. మొదటి 3 అభ్యర్థులు కాకుండా, మేము వారికి 4 నుండి n వరకు సాధారణ సంఖ్యలను కేటాయించవచ్చు. కొన్ని ఉదాహరణలను పరిశీలిద్దాం.

సాపేక్ష ర్యాంకులు లీట్‌కోడ్ పరిష్కారం

[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 మంది సంబంధిత అభ్యర్థులకు కేటాయించాము.

అప్రోచ్

సమస్య సాపేక్ష ర్యాంకులు లీట్‌కోడ్ సొల్యూషన్ మొదటి 3 అభ్యర్థులకు పతకాలను కేటాయించాలని మరియు మిగిలిన అభ్యర్థులకు ర్యాంకులను కేటాయించమని అడుగుతుంది. ఇచ్చిన క్రమాన్ని క్రమబద్ధీకరించడం అనేది ఒకరు ఆలోచించగల సరళమైన విషయం. కానీ మేము అసలు సూచికలకు ర్యాంకులను కేటాయించాలి. కాబట్టి, మేము ఇచ్చిన క్రమాన్ని నేరుగా క్రమబద్ధీకరిస్తే, అప్పుడు మనం అసలు సూచికలను కోల్పోతాము. మరియు ర్యాంకులను కేటాయించాలని నిర్ణయించలేరు. అందువల్ల మేము అసలు సూచికలను కోల్పోకుండా చూసుకోవడానికి, అసలు సూచికలను స్కోర్‌లతో నిల్వ చేసే కొత్త వెక్టర్ లేదా శ్రేణిని సృష్టిస్తాము. మేము ఈ క్రొత్త శ్రేణి లేదా వెక్టర్‌ను క్రమబద్ధీకరిస్తాము. క్రమబద్ధీకరించిన తరువాత, మేము బంగారు, వెండి మరియు కాంస్య పతకాన్ని సంబంధిత అభ్యర్థులకు మరియు ర్యాంకులను 4 నుండి n వరకు అర్హులైన అభ్యర్థులకు కేటాయిస్తాము. మేము దీన్ని చేయగలము ఎందుకంటే మన క్రొత్త సవరించిన శ్రేణి లేదా వెక్టర్‌ను క్రమబద్ధీకరించినప్పుడు, అసలు సూచికలు నిల్వ చేసిన విలువలకు అనుగుణంగా వాటి స్థానాలను కూడా మార్చుకుంటాయి.

సాపేక్ష ర్యాంకుల కోసం కోడ్ లీట్‌కోడ్ పరిష్కారం

సాపేక్ష ర్యాంకుల లీట్‌కోడ్ పరిష్కారం కోసం సి ++ కోడ్

#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) స్థలాన్ని తీసుకునే సార్టింగ్‌ను ఉపయోగించాము కాబట్టి. స్థల సంక్లిష్టత కూడా సమయ సంక్లిష్టతకు సమానం.