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

โปรแกรมค้นหาจำนวนคู่ (i, j) ที่องค์ประกอบ ith และ jth เหมือนกันใน Python


สมมติว่าเรามีตัวเลขอาร์เรย์ เราต้องหาจำนวนคู่ (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