ليٽ ڪوڊ جو حل سب آريوز کي ريورس ڪرڻ سان ٻه آڙيون برابر ٺاهيو  


تڪليف جي سطح آسان
بار بار پڇڻ ۾ ڪريو
algorithms ڪيريو ڪوڊنگ انٽرويو انٽرويو جي تياري ليٽ ڪوڊ LeetCodeSolutions

مسئلو ذيلي آرڊرز کي ريورس ڪرڻ سان ٻه آريا برابر ڪريو ليٽ ڪوڊ حل اسان کي ٻن مهيا ڪري ٿو قطارون. انهن مان هڪ هڪ ٽارگيٽ صف آهي ۽ ٻئي هڪ انٽيپ صف آهي. انپٽ صف کي استعمال ڪندي ، اسان کي ٽارگيٽ ترتيب ڏيڻ جي ضرورت آهي. اسان انٽ جي صف ۾ ڪنهن به ذيلي قطار کي ريورس ڪري سگھو ٿا. پر اسان انپٽ صف جي عناصرن کي تبديل نٿا ڪري سگھون. اسان کي چرپر کي انجام ڏيڻ لاءِ رستو ڳولڻ جي ضرورت نه آهي. سچو واپس اچو جيڪڏهن ممڪن هجي ته ڪوڙو هجي. تنهن ڪري ، هميشه وانگر ، حل ۾ گہرے غوطه هڻڻ کان پهريان اچو ته ڪجھ مثالن تي نظر وجهون.

ليٽ ڪوڊ جو حل سب آريوز کي ريورس ڪرڻ سان ٻه آڙيون برابر ٺاهيوپن

target = [1,2,3,4], arr = [2,4,1,3]
true

وضاحت: اسان پهرين ذيلي قطار کي انڊيڪس 0 کان 2 تائين لوڏي سگهون ٿا ، ان کان پوءِ اسين سب سرري کي 1 کان 2 تائين ريورس ڪيو. آخر ۾ ، اسان انڊيڪس 2 کان 3. کي ريورس ڪيو ۽ ان طريقي سان ، اسان ٽارگيٽ ليڊر ٺاهي سگهون ٿا. . مٿي ڏنل تصوير تي ڌيان ڏيڻ سان اهو بهتر سمجهي سگهجي ٿو.

ليٽ ڪوڊ حل کي ذيلي-قطارون ريورس ڪرڻ ٻه برابر ترتيب ڏيڻ لاءِ اتفاق  

ڳڻپ جو طريقو استعمال ڪندي مسئلو آساني سان حل ڪري سگهجي ٿو. ڳڻپ جو طريقو ڪجهه معياري الگورتھم آهي. اهو ڳڻپ جو قسم جي طور تي استعمال ڪيو ويندو آهي ۽ ٻين ڪيترن ئي سوالن ۾. تنهنڪري اسان هتي عناصر جي ڳڻپ کي ھدف جي ترتيب کان رکون ٿا. ان کان پوء اسان انٽ ليول جي عناصر کي ڇڪايو ٿا. جڏهن اسان ڪنهن عنصر کي منهن ڏيون ٿا ، اسان ان جي ڳڻپ کي فریکوئنسي يا ڳڻپ واري صف مان گهٽايو ٿا. جيڪڏهن انهي آپريشن دوران ڪنهن به طرح ، ڪو انڊيڪس منفي قيمت رکي ٿو اسان غلط واپس ڪيون ٿا.

پڻ ڏسو
1s جي ڳڻپ ڪندڙ هڪ کان وڌيڪ کان وڌيڪ هڪ نمبر جي 0 کان وڌيڪ

تعدد صف ۾ هڪ منفي ڳڻپ ظاهر ڪري ٿو ته ان پتي صف عنصر لاءِ وڏي ڳڻتي آهي. پر اهو ڪم ڪيئن حل ڪندو آهي؟ هڪ دفعو توهان مشاهدو knowاڻو ٿا جواب آسان آهي. هڪ دفعو توهان ڪوشش ڪريو ذيلي قطار جي ڪجهه ريورسز. توهان آساني سان سمجهي سگهو ٿا ته توهان ڪنهن به جڳهه تي انپٽ آرٽ جو عنصر ڪنهن به جڳهه تي رکي سگهو ٿا. تنهن ڪري ، هن قاعدي کي استعمال ڪندي اسان کي جانچڻ جي ضرورت آهي ته ڇا ٽارگيٽ صف ۾ موجود عناصر ساڳيا آهن انٽ صف جو.

ليٽ ڪوڊ حل کي ذيلي-بنديون بدلائڻ سان ٻه ڀرتيون برابر بڻائڻ جي لاءِ ڪوڊ  

سي ++ ڪوڊ

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

bool canBeEqual(vector<int>& target, vector<int>& arr) {
    vector<int> cnt(1001, 0);
    for(int i=0;i<target.size();i++)
        ++cnt[target[i]];
    for (int i=0;i<arr.size();i++) {
        if (--cnt[arr[i]] < 0) {
            return false;
        }
    }
    return true;
}

int main(){
    vector<int> target = {1, 2, 3, 4};
    vector<int> arr = {2, 3, 1, 4};
    cout<<(canBeEqual(target, arr) ? "true" : "false");
}
true

جاوا ڪوڊ

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

class Main
{
  public static boolean canBeEqual(int[] target, int[] arr) {
        int[] cnt = new int[1001];
        for(int i=0;i<target.length;i++)
            ++cnt[target[i]];
        for (int i=0;i<arr.length;i++) {
            if (--cnt[arr[i]] < 0) {
                return false;
            }
        }
        return true;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    int[] target = {1, 2, 3, 4};
      int[] arr = {2, 3, 1, 4};
      System.out.print(canBeEqual(target, arr) ? "true" : "false");
  }
}
true

پيچيدگي تجزيي  

وقت جي پيچيدگي

اي (اين) ، ڇاڪاڻ ته اسان منظرن جي سمورن عنصرن مان گذري رهيا آهيون.

خلائي پيچيدگي

اي (1) ، ڇاڪاڻ ته اسان هڪ مستقل سائز واري تعدد يا ڳڻپ جو استعمال ڪيو

1