د کانټینټینټ لیټکوډ حل له لارې د صف جوړونې چیک کړئ


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي über
پیشه کوډسینال هش میپ ننداره

ستونزه د مقابلې لیټکوډ حل له لارې د صف جوړونې چیک موږ ته د تیرونو لړۍ چمتو کړې. سره له دې موږ ته هم یو تسلیم ورکول کیږي. بیا موږ ته ویل کیږي چې ومومي که چیرې موږ وکولی شو په کارولو سره ورکړل شوي ترتیب جوړ کړو سور د. موږ کولی شو اررونه په هر هغه ترتیب ترتیب کړو چې موږ یې غواړو. مګر موږ نشو کولی په صف کې دننه عناصر تنظیم کړو. موږ ته دا هم ویل شوي چې انابریز د سرسري صفونو کې ځانګړي دي. نو مخکې لدې چې حل ته یوه کتنه وکړئ ، موږ باید یو څو مثالونو ته یوه کتنه وکړو.

د کانټینټینټ لیټکوډ حل له لارې د صف جوړونې چیک کړئ

arr = [15,88], pieces = [[88],[15]]
true

توضیحي: موږ کولی شو عناصر په برعکس ترتیب کړئ. پدې توګه وروستی صف چې 15 دی به په مخ کې راشي. په ورته ډول ، لومړی عنصر به په شا شي. پدې توګه موږ کولی شو ورکړل شوی صف جوړ کړو.

arr = [91,4,64,78], pieces = [[78],[4,64],[91]]
true

توضیحي: که موږ وروستی عنصر لومړی توجیه کړو ، بیا منځنی سرنی ، او په پای کې لومړی صف. پدې توګه موږ کولی شو اړین ترتیب ترلاسه کړو.

د کانټیکنټینټ لیټکوډ حل له لارې د چیک اری فارمیشن لپاره لاره

ستونزه د مقابلې لیټکوډ حل له لارې د صف جوړښت چیک کړئ موږ څخه غوښتنه وکړه چې وګورو چې ایا موږ کولی شو د ارمانونو له صف څخه اړین ترتیب ترلاسه کړو. ستونزه داسې ښکاري چې تکرارونکی وي ، چیرې چې موږ اړتیا لرو ټول امکانات وڅیړو. په تکراري ب Inه کې ، موږ لومړی هڅه کوو چې یو صف غوره کړو او بیا یې وګورو چې آیا اوسنی صف مناسب دی نو ورته عملیات ترسره کوو تر هغه چې موږ تسلسل ختم نه کړو. مګر هغه ګټه چې موږ یې دلته لرو ځانګړي عناصر دي. نو ، موږ په ساده ډول یوازې د لومړني عنصرونو د تیرونو لومړني عنصر سره چیک کوو. حتی د دې کتل به ډاډ ترلاسه کړي چې موږ کولی شو د غوره شوي صف سره مخکې لاړ شو.

د یو سري غوره کولو وروسته ، موږ په هغې کې ټول عنصرونه تثبیت کوو په دې کې چې صف په ترتیب کې ټول عنصر لري تر هغه چې موږ یې وباسو. د ستړیا وروسته ، ورته پروسه تکرار کیږي. که چیرې د صف او عنصر عنصر کې یو څه سمون شتون ولري ، موږ غلط بیرته راستون شو. په نهایت کې ، کله چې موږ کوم ډول سمون ونه مومو نو موږ ریښتیني شو.

د مقابلې لیټکوډ حل له لارې د چیک سري فارمیشن لپاره کوډ

C ++ کوډ

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

bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
    unordered_map<int,int> entry;
    for(int i=0;i<pieces.size();i++)
        entry[pieces[i][0]] = i;
    int i =  0;
    while(i < arr.size()){
        if(entry.count(arr[i])){
            vector<int> &piece  = pieces[entry[arr[i]]];
            for(auto x: piece)
                if(x != arr[i++])
                    return false;
        } else {
            return false;
        }
    }
    return true;
}

int main(){
    vector<int> arr = {91, 4, 64, 78};
    vector<vector<int>> pieces = {{78},{4,64},{91}};
    cout<<(canFormArray(arr, pieces) ? "true" : "false");
}
true

جاوا کوډ

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

class Main
{
  public static boolean canFormArray(int[] arr, int[][] pieces) {
        HashMap<Integer, Integer> entry = new HashMap<Integer, Integer>();
        for(int i=0;i<pieces.length;i++)
            entry.put(pieces[i][0], i);
        int i =  0;
        while(i < arr.length){
            if(entry.containsKey(arr[i])){
                int n = pieces[entry.get(arr[i])].length;
                int k = entry.get(arr[i]);
                for(int j=0;j<n;j++)
                    if(pieces[k][j] != arr[i++])
                        return false;
            } else {
                return false;
            }
        }
        return true;
    }
    
  public static void main (String[] args) throws java.lang.Exception {
    int[] arr = {91, 4, 64, 78};
      int[][] pieces = {{78},{4,64},{91}};
      System.out.print(canFormArray(arr, pieces) ? "true" : "false");
  }
}
true

د پیچلتیا تحلیل

د وخت پیچلتیا

O (N) ، چیرې چې N په ورکړل شوي ترتیب کې د عناصرو ټوله شمیره ده. د وخت پیچلتیا د کارولو له امله لاین ته راټیټه شوې ده هش میپ.

د ځای پیچلتیا

او (م) ، چیرې چې M د صفونو په لړ کې د تیرونو شمیره ده.