สมมติว่าเรามีจำนวนอาร์เรย์ที่องค์ประกอบทั้งหมดไม่ซ้ำกันและมีอาร์เรย์อื่นที่มีอาร์เรย์ขนาดเล็กต่างกันเรียกว่าชิ้นส่วน เราต้องตรวจสอบว่าเราสามารถหาค่าตัวเลขของอาร์เรย์หลักได้หรือไม่โดยการต่ออาร์เรย์เป็นชิ้นๆ ในลำดับใดๆ ก็ตาม แต่เราไม่ได้รับอนุญาตให้จัดลำดับองค์ประกอบใหม่ในแต่ละส่วนของอาร์เรย์[i]
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5,1,12,36,2,47,6] ชิ้น =[[2,47,6],[12,36],[1],[5]], แล้วผลลัพธ์จะเป็น True เพราะเราสามารถต่อพวกมันในลำดับนี้ [[5], [1], [12,36], [2,47,6]] เพื่อรับอาร์เรย์หลัก
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
temp :=รายการใหม่
-
สำหรับแต่ละ p เป็นชิ้น ๆ ทำ
-
ถ้า p[0] ไม่มีอยู่ใน nums แล้ว
-
คืนค่าเท็จ
-
-
l :=ขนาดของ p
-
indx :=index(p[0]) เป็น nums
-
ถ้า subarray ของ nums จาก index indx ถึง indx+l-1 ไม่เหมือนกับ p ดังนั้น
-
คืนค่าเท็จ
-
-
มิฉะนั้น
-
ต่อท้าย p หลังจากอุณหภูมิ
-
-
-
ถ้าขนาดของ nums เท่ากับขนาดของ temp แล้ว
-
คืนค่า True
-
-
มิฉะนั้น
-
คืนค่าเท็จ
-
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums, pieces): temp = [] for p in pieces: if p[0] not in nums: return False l = len(p) indx = nums.index(p[0]) if nums[indx:indx+l] != p: return False else: temp.extend(p) if len(nums) == len(temp): return True else: return False nums = [5,1,12,36,2,47,6] pieces = [[2,47,6],[12,36],[1],[5]] print(solve(nums, pieces))
อินพุต
[5,1,12,36,2,47,6], [[2,47,6],[12,36],[1],[5]]
ผลลัพธ์
True