ກວດສອບການສ້າງແບບ Array ຜ່ານ Concatenation Leetcode Solution  


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Uber
ຂັ້ນຕອນວິທີ Array CodeSignal ລະຫັດ HashMap ການສໍາພາດ ການສໍາພາດກ່ອນ LeetCode LeetCodeSolutions ການຈັດລຽງ

ບັນຫາການກວດສອບການສ້າງແບບ Array ຜ່ານ Concatenation Leetcode Solution ໄດ້ໃຫ້ພວກເຮົາມີຂບວນແຖວ. ຄຽງຄູ່ກັບການທີ່ພວກເຮົາຍັງໄດ້ຮັບ ລຳ ດັບ. ພວກເຮົາຖືກບອກໃຫ້ຊອກຫາວ່າພວກເຮົາສາມາດສ້າງ ລຳ ດັບດັ່ງກ່າວໂດຍ ນຳ ໃຊ້ຢ່າງໃດ array ຂອງຂບວນການ. ພວກເຮົາສາມາດຈັດແຈງອາຄານຕາມສັ່ງທີ່ພວກເຮົາຕ້ອງການ. ແຕ່ພວກເຮົາບໍ່ສາມາດຈັດແຈງອົງປະກອບຕ່າງໆພາຍໃນອາເລ. ພວກເຮົາຍັງຖືກບອກວ່າເລກເຕັມແມ່ນມີເອກະລັກສະເພາະໃນບັນດາຂບວນການຂອງອາຄານ. ສະນັ້ນກ່ອນທີ່ຈະພິຈາລະນາແກ້ໄຂບັນຫາ, ພວກເຮົາຕ້ອງໄດ້ພິຈາລະນາບາງຕົວຢ່າງ.

ກວດສອບການສ້າງແບບ Array ຜ່ານ Concatenation Leetcode SolutionPin

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

ຄໍາອະທິບາຍ: ພວກເຮົາສາມາດຈັດແຈງອົງປະກອບຕ່າງໆຕາມລໍາດັບ. ດັ່ງນັ້ນອາເລສຸດທ້າຍທີ່ເປັນ 15 ຈະມາຢູ່ທາງຫນ້າ. ຄ້າຍຄືກັນ, ອົງປະກອບ ທຳ ອິດກໍ່ຈະກັບໄປຖອຍຫຼັງ. ວິທີນີ້ພວກເຮົາສາມາດປະກອບເປັນແຖວທີ່ໃຫ້.

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

ຄຳ ອະທິບາຍ: ຖ້າພວກເຮົາສະຫລຸບອົງປະກອບສຸດທ້າຍກ່ອນ, ຫຼັງຈາກນັ້ນແມ່ນຂອດກາງ, ແລະໃນທີ່ສຸດແມ່ນຂບວນ ທຳ ອິດ. ວິທີນີ້ພວກເຮົາສາມາດໄດ້ຮັບ ລຳ ດັບທີ່ຕ້ອງການ.

ວິທີການ ສຳ ລັບການກວດສອບການສ້າງແບບ Array ຜ່ານ Concatenation Leetcode Solution  

ບັນຫາການກວດສອບການສ້າງແບບ Array ຜ່ານ Concatenation Leetcode Solution ໄດ້ຂໍໃຫ້ພວກເຮົາກວດເບິ່ງວ່າພວກເຮົາສາມາດໄດ້ຮັບ ລຳ ດັບທີ່ຕ້ອງການຈາກອາເລຂອງບໍລິສັດ. ບັນຫາທີ່ເບິ່ງຄືວ່າມັນເປັນການເອີ້ນຄືນ, ເຊິ່ງພວກເຮົາຕ້ອງໄດ້ກວດເບິ່ງຄວາມເປັນໄປໄດ້ທັງ ໝົດ. ໃນລັກສະນະເອີ້ນຄືນ, ພວກເຮົາ ທຳ ອິດພະຍາຍາມເລືອກເອົາອາເລແລະຫຼັງຈາກນັ້ນກວດເບິ່ງວ່າແຖວປະຈຸບັນ ເໝາະ ສົມແລ້ວປະຕິບັດການ ດຳ ເນີນງານດຽວກັນຈົນກວ່າພວກເຮົາ ໝົດ ກຳ ນົດ ລຳ ດັບ. ແຕ່ຂໍ້ໄດ້ປຽບທີ່ພວກເຮົາມີຢູ່ນີ້ແມ່ນອົງປະກອບທີ່ເປັນເອກະລັກ. ສະນັ້ນ, ພວກເຮົາພຽງແຕ່ກວດເບິ່ງພຽງແຕ່ອົງປະກອບ ທຳ ອິດທີ່ມີອາຄານ ທຳ ອິດ. ເຖິງແມ່ນວ່າການກວດກາສິ່ງນີ້ກໍ່ຈະເຮັດໃຫ້ແນ່ໃຈວ່າພວກເຮົາສາມາດສືບຕໍ່ເດີນ ໜ້າ ກັບອາເລທີ່ຖືກເກັບໄດ້.

ເບິ່ງ
ບັນທຶກການເຂົ້າຮ່ວມຂອງນັກຮຽນ I Leetcode Solution

ຫຼັງຈາກການເລືອກເອົາອາເລ, ພວກເຮົາຈະລວບລວມທຸກໆອົງປະກອບທີ່ຢູ່ໃນມັນກວດເບິ່ງວ່າອາເລມີສ່ວນປະກອບທັງ ໝົດ ຂອງ ລຳ ດັບຈົນກວ່າພວກເຮົາຈະ ໝົດ ກຳ ລັງ. ຫຼັງຈາກການຫາຍໃຈ, ຂະບວນການດຽວກັນກໍ່ເຮັດຊ້ ຳ ອີກ. ຖ້າຫາກວ່າມີຄວາມບໍ່ສອດຄ່ອງບາງຢ່າງໃນອົງປະກອບຂອງອາເລແລະ ລຳ ດັບ, ພວກເຮົາກໍ່ສົ່ງຄືນ ຄຳ ທີ່ບໍ່ຖືກຕ້ອງ. ໃນທີ່ສຸດ, ໃນເວລາທີ່ພວກເຮົາບໍ່ພົບຄວາມຜິດພາດໃດໆທີ່ພວກເຮົາກັບຄືນມາເປັນຄວາມຈິງ.

ລະຫັດ ສຳ ລັບການກວດສອບການສ້າງຮູບແບບ Array ຜ່ານ Concatenation Leetcode Solution  

ລະຫັດ 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

ລະຫັດ Java

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

ການວິເຄາະຄວາມສັບສົນ  

ຄວາມສັບສົນເວລາ

ໂອ (N), ບ່ອນທີ່ N ແມ່ນ ຈຳ ນວນທັງ ໝົດ ຂອງອົງປະກອບໃນ ລຳ ດັບທີ່ໃຫ້ໄວ້. ຄວາມສັບສົນທີ່ໃຊ້ເວລາໄດ້ຖືກຫຼຸດລົງເປັນເສັ້ນເພາະວ່າການ ນຳ ໃຊ້ HashMap.

ຄວາມສັບສົນໃນອະວະກາດ

ໂອ (M), ບ່ອນທີ່ M ແມ່ນຈໍານວນຂອງຂບວນໃນແຖວຂອງຂບວນການ.

1