Python 程式:透過連線另一個數組的子陣列生成陣列


假設我們有一個名為 groups 的二維陣列和另一個數組 nums。我們需要檢查是否可以從陣列 nums 中選擇 n 個不相交的子陣列,使得第 i 個子陣列等於 groups[i](從 0 開始索引),並且如果 i > 0,則第 (i-1) 個子陣列將出現在 nums 中的第 i 個子陣列之前。

因此,如果輸入類似於 groups = [[2,-2,-2],[4,-3,0]] nums = [1,-1,0,2,-2,-2,4,-3,0],則輸出將為 true,因為陣列 group[0] 出現在 nums 的索引 3 到 5 處,而 group[1] 出現在 nums 的索引 6 到 8 處。

為了解決這個問題,我們將遵循以下步驟:

  • i := 0

  • 對於 groups 中的每個 grp,執行以下操作:

    • 對於從 i 到 nums 大小 - 1 的範圍內的每個 j,執行以下操作:

      • 如果 nums[從索引 j 到 j+ grp 大小] 的子陣列與 grp 相同,則:

        • i := j + grp 大小

        • 退出迴圈

      • 否則:

        • 返回 False

  • 返回 True

示例

讓我們看看以下實現以更好地理解:

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

輸入

[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]

輸出

True

更新於: 2021年10月6日

209 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.