สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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