สมมติว่าเรามีตัวเลขอาร์เรย์ เราต้องหาจำนวนคู่ (i,j) ว่ามี nums[i] =nums[j] แต่ i ไม่เหมือนกับ j
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1,3,1,3,5] ผลลัพธ์จะเป็น 4 เพราะทั้งคู่คือ (0,2), (2,0), (1,3) และ (3,1)
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- d :=แผนที่ใหม่
- สำหรับแต่ละ c เป็น nums ทำ
- d[c] :=(d[c] + 1) เมื่อ c มีอยู่ใน d มิฉะนั้น 1
- res :=0
- สำหรับแต่ละ c อยู่ในรายการองค์ประกอบ (x สำหรับ x ทั้งหมดใน d โดยที่ d[x]> 1) ทำ
- res :=res +(d[c] *(d[c]-1))
- ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums): d = {} for c in nums: d[c] = d[c] + 1 if c in d.keys() else 1 res = 0 for c in (x for x in d if d[x] > 1): res += (d[c] * (d[c]-1)) return res nums = [1,3,1,3,5] print(solve(nums))
อินพุต
[1,3,1,3,5]
ผลลัพธ์
4