একটি অ্যারে লেটকোড সমাধানের র‌্যাঙ্ক ট্রান্সফর্ম


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

একটি অ্যারে লেটকোড সমাধানের র‌্যাঙ্ক ট্রান্সফর্ম আমাদের একটি সরবরাহ করেছে বিন্যাস পূর্ণসংখ্যার অ্যারে বা প্রদত্ত ক্রম অরসোর্টড। আমাদের প্রদত্ত অনুক্রমের প্রতিটি পূর্ণসংখ্যায় র‌্যাঙ্কগুলি নির্ধারণ করতে হবে। র‌্যাঙ্কগুলি বরাদ্দ করার জন্য কিছু বিধিনিষেধ রয়েছে।

  1. র‌্যাঙ্কগুলি অবশ্যই 1 দিয়ে শুরু করা উচিত।
  2. সংখ্যাটি বৃহত্তর, উচ্চতর র‌্যাঙ্ক (সংখ্যার দিক থেকে বৃহত্তর)।
  3. প্রতিটি পূর্ণসংখ্যার জন্য র‌্যাঙ্কগুলি যথাসম্ভব ছোট হওয়া উচিত।

একটি অ্যারে লেটকোড সমাধানের র‌্যাঙ্ক ট্রান্সফর্ম

সুতরাং, আসুন কয়েকটি উদাহরণে একবার দেখুন।

arr = [40,10,20,30]
[4,1,2,3]

ব্যাখ্যা: যদি আমরা প্রদত্ত ইনপুটটি বাছাই করি তবে উদাহরণটি বোঝা আরও সহজ হবে। বাছাইয়ের পরে, ইনপুটটি [10, 20, 30, 40] হয়ে যায়। এখন যদি আমরা প্রদত্ত বিধিগুলি অনুসরণ করি। নতুন পরিবর্তিত অ্যারে অনুসারে র‌্যাঙ্কগুলি [1, 2, 3, 4] হবে। আমরা যদি আউটপুটে উপাদানগুলির সাথে মেলে। তারা একই, আউটপুটটির নির্ভুলতা নিশ্চিত করে।

[100,100,100]
[1, 1, 1]

ব্যাখ্যা: যেহেতু ইনপুটটিতে সমস্ত উপাদান একই রকম। সুতরাং সকলের অবশ্যই 1 সমান র‌্যাঙ্ক থাকা আবশ্যক।

একটি অ্যারে লেটকোড সমাধানের র‌্যাঙ্ক ট্রান্সফর্মের জন্য পদ্ধতি

অ্যারে লেটকোড সলিউশনটির সমস্যা র‌্যাঙ্ক ট্রান্সফর্ম আমাদের প্রদত্ত ক্রমটিতে র‌্যাঙ্কগুলি নির্ধারণ করতে বলেছিল। যে শর্তগুলি পূরণ করতে হবে তা সমস্যার বর্ণনায় ইতিমধ্যে বর্ণিত হয়েছে। সুতরাং, বরং তাদের আবার বর্ণনা। আমরা সরাসরি সমাধানের মধ্য দিয়ে যাব। সুতরাং, উদাহরণ হিসাবে দেখা। সাজানো ক্রম অনুসারে র‌্যাঙ্কগুলি নির্ধারণ করা আরও সহজ। সুতরাং, আমরা প্রদত্ত ইনপুট ক্রমটিতে উপাদানগুলি সংরক্ষণ করতে একটি অর্ডার করা মানচিত্র ব্যবহার করি। অর্ডার করা মানচিত্র ব্যবহার করে নিশ্চিত করা যায় যে উপাদানগুলি সাজানো হয়েছে।

এখন, আমাদের অবশ্যই তৃতীয় শর্তটি মোকাবেলা করতে হবে। তৃতীয় শর্তটি উল্লেখ করেছে যে আমাদের যথাসম্ভব ক্ষুদ্রতম স্থানগুলি নির্ধারণ করতে হবে। সুতরাং, আমরা কেবল মানচিত্রে উপস্থিত কীগুলিতে 1 থেকে সংখ্যা নির্ধারণ করি। এটি তিনটি আরোপিত শর্তের যত্ন নেয়। বড় সংখ্যার র‌্যাঙ্ক বেশি। র‌্যাঙ্কগুলি ১ থেকে শুরু হয় They এগুলি যতটা সম্ভব ছোট।

এখন, আমরা কেবল ইনপুট ক্রমটি অতিক্রম করি এবং মানচিত্রে সঞ্চিত স্থানগুলি নির্ধারণ করি।

কোড

একটি অ্যারে লেটকোড সমাধানের র‌্যাঙ্ক ট্রান্সফর্মের জন্য সি ++ কোড

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

vector<int> arrayRankTransform(vector<int>& arr) {
    map<int, int> m;
    for(auto x: arr)
        m[x] = 1;
    int lst = 0;
    for(auto x: m){
        m[x.first] = lst + 1;
        lst++;
    }
    for(int i=0;i<arr.size();i++)
        arr[i] = m[arr[i]];
    return arr;
}

int main(){
    vector<int> input = {40, 10, 30, 20};
    vector<int> output = arrayRankTransform(input);
    for(auto x: input)
        cout<<x<<" ";
}
4 1 3 2

জাভা কোড র‌্যাঙ্ক ট্রান্সফর্ম অফ অ্যারে লেটকোড সলিউশন

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

class Main
{
  public static int[] arrayRankTransform(int[] arr) {
        Map<Integer, Integer> m = new TreeMap<Integer, Integer>();
        for(int x: arr)
            m.put(x, 1);
        int lst = 0;
        for(Integer x: m.keySet()){
            m.put(x, lst + m.get(x));
            lst = m.get(x);
        }
        for(int i=0;i<arr.length;i++)
            arr[i] = m.get(arr[i]);
        return arr;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    int[] input = {40, 10, 30, 20};
    int[] output = arrayRankTransform(input);
    for(int x: output)
      System.out.print(x+" ");
  }
}
4 1 3 2

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

সময় জটিলতা

ও (এনলগএন), যেহেতু আমরা একটি অর্ডার করা মানচিত্র ব্যবহার করেছি আমাদের সন্নিবেশ, মুছতে এবং অনুসন্ধানের জন্য লগারিদমিক ফ্যাক্টর রয়েছে।

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

চালু), কারণ আমরা ইনপুটটিতে উপাদানগুলি সংরক্ষণ করতে একটি অর্ডার করা মানচিত্র ব্যবহার করি।