துணை வரிசைகள் லீட்கோட் தீர்வை மாற்றுவதன் மூலம் இரண்டு வரிசைகளை சமமாக்குங்கள்


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது பேஸ்புக்
அணி

துணை வரிசைகளை மாற்றியமைப்பதன் மூலம் இரண்டு வரிசைகளை சமமாக்குவது சிக்கல் லீட்கோட் தீர்வு எங்களுக்கு இரண்டை வழங்குகிறது வரிசைகள். அவற்றில் ஒன்று இலக்கு வரிசை மற்றும் மற்றொன்று உள்ளீட்டு வரிசை. உள்ளீட்டு வரிசையைப் பயன்படுத்தி, இலக்கு வரிசையை உருவாக்க வேண்டும். உள்ளீட்டு வரிசையில் உள்ள எந்த துணை வரிசையையும் நாம் மாற்றியமைக்கலாம். ஆனால் உள்ளீட்டு வரிசையின் கூறுகளை எங்களால் மாற்ற முடியாது. கையாளுதலை எவ்வாறு செய்வது என்பதற்கான வழியை நாம் கண்டுபிடிக்க தேவையில்லை. முடிந்தால் தவறானது என்றால் உண்மைக்குத் திரும்புக. எனவே, வழக்கம் போல் கரைசலில் ஆழமாக மூழ்குவதற்கு முன் சில எடுத்துக்காட்டுகளைப் பார்ப்போம்.

துணை வரிசைகள் லீட்கோட் தீர்வை மாற்றுவதன் மூலம் இரண்டு வரிசைகளை சமமாக்குங்கள்

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

விளக்கம்: நாம் முதல் துணை வரிசையை குறியீட்டு 0 முதல் 2 வரை மாற்றியமைக்கலாம், பின்னர் துணை வரிசையை 1 முதல் 2 வரை மாற்றியமைக்கலாம். முடிவில், குறியீட்டு 2 முதல் 3 வரை தலைகீழாக மாற்றலாம். இந்த வழியில், இலக்கு வரிசையை உருவாக்கலாம் . மேலே உள்ள படத்தைப் பார்ப்பதன் மூலம் இதை நன்கு புரிந்து கொள்ள முடியும்.

துணை வரிசைகள் லீட்கோட் தீர்வை மாற்றுவதன் மூலம் இரண்டு வரிசைகளை சமமாக்குவதற்கான அணுகுமுறை

எண்ணும் முறையைப் பயன்படுத்தி சிக்கலை எளிதில் தீர்க்க முடியும். எண்ணும் முறை நிலையான வழிமுறைகளில் சில. இது எண்ணிக்கை வகை மற்றும் பல கேள்விகளில் பயன்படுத்தப்படுகிறது. எனவே இங்கே இலக்கு வரிசையின் உறுப்புகளின் எண்ணிக்கையை வைத்திருக்கிறோம். உள்ளீட்டு வரிசையின் கூறுகளை நாம் பயணிக்கிறோம். எந்தவொரு உறுப்பையும் நாம் எதிர்கொள்ளும்போது, ​​அதன் எண்ணிக்கையை அதிர்வெண் அல்லது எண்ணிக்கை வரிசையிலிருந்து குறைக்கிறோம். இந்த செயல்பாட்டின் போது எப்படியாவது, எந்தவொரு குறியீடும் எதிர்மறையான மதிப்பைக் கொண்டிருந்தால், நாங்கள் பொய்யைத் தருகிறோம்.

அதிர்வெண் வரிசையில் எதிர்மறை எண்ணிக்கை உள்ளீட்டு வரிசை ஒரு உறுப்புக்கு பெரிய எண்ணிக்கையைக் கொண்டுள்ளது என்பதைக் காட்டுகிறது. ஆனால் இதைச் செய்வது சிக்கலை எவ்வாறு தீர்க்கிறது? அவதானிப்பை நீங்கள் அறிந்தவுடன் பதில் எளிது. துணை வரிசைகளின் சில தலைகீழ் மாற்றங்களைச் செய்ய முயற்சித்தவுடன். உள்ளீட்டு வரிசையின் எந்த உறுப்புகளையும் நீங்கள் விரும்பும் இடத்தில் எந்த இடத்திலும் வைக்கலாம் என்பதை நீங்கள் எளிதாகக் கண்டுபிடிக்கலாம். எனவே, இந்த விதியைப் பயன்படுத்தி இலக்கு வரிசையில் உள்ள கூறுகள் உள்ளீட்டு வரிசைக்கு சமமானதா என்பதை நாம் சரிபார்க்க வேண்டும்.

துணை வரிசைகள் லீட்கோட் தீர்வை மாற்றுவதன் மூலம் இரண்டு வரிசைகளை சமமாக்குவதற்கான குறியீடு

சி ++ குறியீடு

#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), ஏனெனில் நாங்கள் நிலையான அளவிலான அதிர்வெண் அல்லது எண்ணிக்கை வரிசையைப் பயன்படுத்தினோம்.