உறவினர் தரவரிசை லீட்கோட் தீர்வு


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது கூகிள்
வரிசையாக்க

உறவினர் தரவரிசை லீட்கோட் தீர்வு ஒரு திசையன் அல்லது உறவினர் அணிகளைக் குறிக்கும் சரங்களின் வரிசையைத் திருப்பித் தருமாறு கேட்கிறது. எங்களுக்கு ஒரு வழங்கப்படுகிறது வரிசை இது விளையாட்டு வீரர்களால் பெறப்பட்ட மதிப்பெண்ணைக் குறிக்கிறது. அணிகளை ஒதுக்க கொடுக்கப்பட்ட மதிப்பெண் வரிசையைப் பயன்படுத்துகிறோம். முதல் 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 வேட்பாளர்களுக்கு XNUMX இடங்களையும் வழங்கியுள்ளோம்.

அணுகுமுறை

சிக்கல் உறவினர் தரவரிசை லீட்கோட் தீர்வு முதல் 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

சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

ஓ (NlogN), ஏனெனில் வரிசையாக்கத்திற்கு O (NlogN) நேரம் தேவைப்படுகிறது, இங்கு N என்பது திசையன் அல்லது வரிசை வரிசைப்படுத்தப்பட்ட உறுப்புகளின் எண்ணிக்கை.

விண்வெளி சிக்கலானது

ஓ (NlogN), O (NlogN) இடத்தை எடுக்கும் வரிசையாக்கத்தை நாங்கள் பயன்படுத்தியுள்ளதால். விண்வெளி சிக்கலானது நேர சிக்கலான தன்மைக்கு சமம்.