Python程式:檢查能否用片段組成陣列
假設我們有一個數組nums,其中所有元素都是唯一的,還有一個包含不同較小陣列的陣列pieces。我們必須檢查是否可以透過以任何順序連線pieces中的陣列來獲得主陣列nums。但是,我們不允許重新排序pieces[i]中存在的元素。
因此,如果輸入類似於nums = [5,1,12,36,2,47,6] pieces = [[2,47,6],[12,36],[1],[5]],則輸出將為True,因為我們可以按此順序連線它們[[5], [1], [12,36], [2,47,6]]以獲得主陣列。
為了解決這個問題,我們將遵循以下步驟:
temp := 一個新的列表
對於pieces中的每個p,執行:
如果p[0]不在nums中,則
返回False
l := p的大小
indx := p[0]在nums中的索引
如果nums從索引indx到indx+l-1的子陣列與p不同,則
返回False
否則
將p新增到temp之後
如果nums的大小與temp的大小相同,則
返回True
否則
返回False
示例 (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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP