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

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


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

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[10, 15, 13, 10] ผลลัพธ์จะเป็น 5 เนื่องจากรายการย่อยที่มีองค์ประกอบแรกและองค์ประกอบสุดท้ายเหมือนกันคือ [10], [15], [13], [ 10], [10, 15, 13, 10].

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • num_sublists :=ขนาดของ nums

  • d :=แผนที่ว่างเปล่า

  • สำหรับแต่ละ n เป็น num ทำ

    • 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