Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมรวมสมาชิกติดกันที่เหมือนกันเป็นซับลิสต์ใน Python

สมมติว่าเรามีรายการตัวเลข nums เราต้องรวมสมาชิกติดกันที่มีค่าเท่ากันเป็นซับลิสต์ แม้จะมีเพียง 1 ครั้งก็ต้องอยู่ในซับลิสต์ของตัวเอง

ตัวอย่าง: nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2] ผลลัพธ์คือ [[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]

ขั้นตอนการแก้ปัญหา

  1. ถ้า nums ว่าง คืนค่าลิสต์ว่าง
  2. result = [[nums[0]]], j = 0
  3. วนลูป i จาก 1 ถึง len(nums)-1:
    • ถ้า nums[i] != nums[i-1]:
      • result.append([])
      • j += 1
    • result[j].append(nums[i])
  4. คืนค่า result

ตัวอย่างโค้ด Python

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))
# Output: [[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]

อินพุต / เอาต์พุต

Input: [5, 5, 2, 7, 7, 7, 2, 2, 2, 2]

Output: [[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]