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

โปรแกรมหาค่าที่ปรากฏเพียงครั้งเดียวในรายการที่ค่าอื่นปรากฏ 3 ครั้งใน Python

สมมติว่าเรามีรายการตัวเลข nums ที่แต่ละค่าปรากฏครบ 3 ครั้ง ยกเว้นค่าเดียวที่ปรากฏเพียงครั้งเดียว เราต้องหาค่าที่ไม่ซ้ำนั้น โดยต้องแก้ในพื้นที่คงที่ (constant space)

ตัวอย่างเช่น หาก nums = [3, 3, 3, 8, 4, 4, 4] ผลลัพธ์จะเป็น 8

ขั้นตอนการแก้ปัญหา (ใช้ Counter - ไม่ใช่ constant space จริง)

  1. สร้างแมป m นับความถี่ของแต่ละค่าใน nums
  2. คืนค่าที่มีความถี่น้อยที่สุด

หมายเหตุ: วิธีนี้ใช้พื้นที่ O(n) สำหรับ constant space จริงควรใช้ Bit Manipulation (XOR และ bit counting)

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

from collections import Counter

class Solution:
    def solve(self, nums):
        nums = Counter(nums)
        return min(nums, key=nums.get)

ob = Solution()
nums = [3, 3, 3, 8, 4, 4, 4]
print(ob.solve(nums))  # Output: 8

อินพุต

[3, 3, 3, 8, 4, 4, 4]

เอาต์พุต

8