Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm một danh sách con trong đó giá trị đầu tiên và giá trị cuối cùng giống nhau trong Python

Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta phải tìm số lượng danh sách con trong đó phần tử đầu tiên và phần tử cuối cùng giống nhau.

Vì vậy, nếu đầu vào giống như nums =[10, 15, 13, 10], thì đầu ra sẽ là 5, vì danh sách con có cùng phần tử đầu tiên và cuối cùng là:[10], [15], [13], [ 10], [10, 15, 13, 10].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • num_sublists:=kích thước của nums

  • d:=một bản đồ trống

  • đối với mỗi n trong số, thực hiện

    • d [n]:=d [n] + 1

  • với mỗi số k và tần số v tương ứng của các phần tử trong d, hãy thực hiện

    • nếu v không giống 1, thì

      • num_sublists:=num_sublists + (thương số của (v-1) * (v) / 2)

  • trả về num_sublists

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

[10, 15, 13, 10]

Đầu ra

5