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

โปรแกรมนับคู่ (i, j) ที่มีค่าเท่ากันในอาร์เรย์ Python

ได้รับอาร์เรย์ nums ต้องการหาจำนวนคู่ (i, j) ที่ nums[i] == nums[j] และ i != j

ตัวอย่าง: nums = [1,3,1,3,5] ผลลัพธ์คือ 4 คู่คือ (0,2), (2,0), (1,3), (3,1)

ขั้นตอนการแก้ปัญหา

  1. สร้างดิกชันนารี d นับความถี่ของแต่ละค่า
  2. สำหรับแต่ละค่า c ที่มีความถี่มากกว่า 1 ให้บวก d[c] * (d[c] - 1) เข้ากับผลลัพธ์ (เพราะแต่ละค่าสามารถจับคู่ได้ d[c]*(d[c]-1) คู่)
  3. คืนค่าผลรวม

ตัวอย่างโค้ด Python

def solve(nums):
    d = {}
    for c in nums:
        d[c] = d.get(c, 0) + 1
    res = 0
    for c in d:
        if d[c] > 1:
            res += d[c] * (d[c] - 1)
    return res

# ทดสอบ
nums = [1, 3, 1, 3, 5]
print(solve(nums))  # ผลลัพธ์: 4

อินพุตตัวอย่าง

[1,3,1,3,5]

เอาต์พุตตัวอย่าง

4