Python程式:將連續相同的元素打包到子列表中


假設我們有一個數字列表nums,我們將把相同值的連續元素打包到子列表中。請記住,如果列表中只有一個元素出現一次,它仍然應該在它自己的子列表中。

因此,如果輸入類似於nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2],則輸出將為[[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]

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

  • 如果nums為空,則
    • 返回一個新列表
  • result := 一個包含另一個列表的列表,該列表包含nums[0]
  • j := 0
  • 對於範圍從1到nums大小的i,執行:
    • 如果nums[i]與nums[i - 1]不同,則
      • 在result的末尾插入一個新列表
      • j := j + 1
    • 在result[j]的末尾插入nums[i]
  • 返回result

讓我們來看下面的實現,以便更好地理解:

示例

 線上演示

class Solution:
   def solve(self, nums):
      if not nums:
         return []
      result = [[nums[0]]]
      j = 0
      for i in range(1, len(nums)):
         if nums[i] != nums[i - 1]:
            result.append([])
            j += 1
            result[j].append(nums[i])
      return result
ob = Solution()
nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2]
print(ob.solve(nums))

輸入

[5, 5, 2, 7, 7, 7, 2, 2, 2, 2]

輸出

[[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]

更新於:2020年10月20日

450 次檢視

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.