আপেক্ষিক র‌্যাঙ্কস লেটকোড সমাধান


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় গুগল
শ্রেণীবিভাজন

রিলেটিভ র‌্যাঙ্কস লেটকোড সলিউশন আমাদেরকে কোনও ভেক্টর বা আপেক্ষিক স্তরের প্রতিনিধিত্ব করে স্ট্রিংগুলির একটি অ্যারে ফিরিয়ে আনতে বলে। আমরা একটি সরবরাহ করা হয় বিন্যাস এটি অ্যাথলেটদের দ্বারা প্রাপ্ত স্কোরকে উপস্থাপন করে। তারপরে আমরা র‌্যাঙ্কগুলি বরাদ্দ করতে প্রদত্ত স্কোর অ্যারে ব্যবহার করি। শীর্ষ 3 প্রার্থীর জন্য একটি ছোট পরিবর্তন রয়েছে। পরিবর্তে, তাদের 1, 2, বা 3 সাধারণ সংখ্যা নির্ধারণ করুন আমাদের স্বর্ণ, রৌপ্য এবং ব্রোঞ্জ পদক নির্ধারণ করতে হবে। শীর্ষ 3 প্রার্থী ব্যতীত, আমরা তাদের 4 থেকে এন পর্যন্ত সহজ সংখ্যা নির্ধারণ করতে পারি। আসুন কয়েকটি উদাহরণ দেখুন।

আপেক্ষিক র‌্যাঙ্কস লেটকোড সমাধান

[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 পদ নির্ধারণ করেছি।

অভিগমন

সমস্যা সম্পর্কিত র‌্যাঙ্কস লেটকোড সলিউশন আমাদের শীর্ষ 3 প্রার্থীকে পদক নিয়োগ এবং বাকী প্রার্থীদের র‌্যাঙ্ক বরাদ্দ করতে বলে। সবচেয়ে সহজ জিনিস যেটি ভাবতে পারে তা হল প্রদত্ত ক্রমটি বাছাই করা। তবে আমাদের মূল সূচকগুলিতে র‌্যাঙ্কগুলি নির্ধারণ করতে হবে। সুতরাং, যদি আমরা প্রদত্ত ক্রমটি সরাসরি क्रमबद्ध করি তবে আমরা মূল সূচকগুলি মিস করব। এবং পদগুলি বরাদ্দ করার সিদ্ধান্ত নিতে সক্ষম হবে না। সুতরাং আমরা যাতে সূচকগুলি হারাতে না পারি তা নিশ্চিত করার জন্য, আমরা একটি নতুন ভেক্টর বা অ্যারে তৈরি করি যা স্কোরগুলির সাথে মূল সূচকগুলি সঞ্চয় করে। আমরা এই নতুন অ্যারে বা ভেক্টরকে বাছাই করি। বাছাইয়ের পরে, আমরা কেবলমাত্র উপযুক্ত প্রার্থীদের জন্য স্বর্ণ, রৌপ্য এবং ব্রোঞ্জ পদকটি যথাযথভাবে প্রার্থী হিসাবে নির্ধারিত করি এবং 4 থেকে এন পর্যন্ত স্থান অর্জন করি। আমরা এটি করতে পারি কারণ যখন আমরা আমাদের নতুন পরিবর্তিত অ্যারে বা ভেক্টরকে বাছাই করি তখন মূল সূচকগুলিও স্টোর মানগুলির সাথে সম্পর্কিত তাদের অবস্থানগুলি অদলবদল করে।

আপেক্ষিক র‌্যাঙ্কস লেটকোড সমাধানের কোড

আপেক্ষিক র‌্যাঙ্কস লেটকোড সমাধানের জন্য সি ++ কোড

#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

জটিলতা বিশ্লেষণ

সময় জটিলতা

ও (এনলগএন), কারণ বাছাইয়ের জন্য ও (এনলগএন) সময় প্রয়োজন, যেখানে এন ভেক্টর বা অ্যারে বাছাই হচ্ছে এমন উপাদানগুলির সংখ্যা।

স্পেস জটিলতা ity

ও (এনলগএন), যেহেতু আমরা বাছাই করেছি যা O (NlogN) স্থান নেয়। স্থান জটিলতাও সময় জটিলতার সমান।