สมมติว่าเรามีรายการตัวเลข nums ที่แต่ละค่าปรากฏครบ 3 ครั้ง ยกเว้นค่าเดียวที่ปรากฏเพียงครั้งเดียว เราต้องหาค่าที่ไม่ซ้ำนั้น โดยต้องแก้ในพื้นที่คงที่ (constant space)
ตัวอย่างเช่น หาก nums = [3, 3, 3, 8, 4, 4, 4] ผลลัพธ์จะเป็น 8
ขั้นตอนการแก้ปัญหา (ใช้ Counter - ไม่ใช่ constant space จริง)
- สร้างแมป
mนับความถี่ของแต่ละค่าในnums - คืนค่าที่มีความถี่น้อยที่สุด
หมายเหตุ: วิธีนี้ใช้พื้นที่ 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