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

โปรแกรมหาสับลิสต์ที่ค่าแรกและค่าสุดท้ายเหมือนกันใน Python

สมมติว่ามีรายการตัวเลขชื่อ nums เราต้องหาจำนวนสับลิสต์ที่องค์ประกอบแรกและสุดท้ายมีค่าเท่ากัน

เช่น ถ้าอินพุตคือ nums = [10, 15, 13, 10] ผลลัพธ์จะเป็น 5 สับลิสต์ที่ตรงเงื่อนไข: [10], [15], [13], [10], [10, 15, 13, 10]

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

  • num_sublists := ขนาดของ nums
  • d := map ว่าง
  • สำหรับแต่ละ n ใน nums ทำ d[n] := d[n] + 1
  • สำหรับแต่ละคู่ k, v ใน d ถ้า v ไม่ใช่ 1 num_sublists := num_sublists + (v-1)*v//2
  • คืนค่า num_sublists

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

from collections import defaultdict
class Solution:
    def solve(self, nums):
        num_sublists = len(nums)
        d = defaultdict(int)
        for n in nums:
            d[n] += 1
        for k, v in d.items():
            if v != 1:
                num_sublists += (v-1)*v//2
        return num_sublists

ob = Solution()
nums = [10, 15, 13, 10]
print(ob.solve(nums))

อินพุต

[10, 15, 13, 10]

เอาต์พุต

5