สมมติว่าเรามีรายการจำนวนเต็มที่เรียงแล้วและไม่ซ้ำ ขนาด n ต้องหาจำนวนเต็มบวกตัวแรกในช่วง [1, n+1] ที่ไม่ได้อยู่ในอาร์เรย์
ตัวอย่าง: nums = [0, 5, 1] ผลลัพธ์ 2 (หายไปในช่วง 1-5)
ขั้นตอนการแก้ปัญหา (Linear Scan)
target = 1- วนลูปผ่านแต่ละ
iในarr:- หาก
i == targetให้target += 1
- หาก
- คืนค่า
target
ตัวอย่างโค้ด Python
class Solution:
def solve(self, arr):
target = 1
for i in arr:
if i == target:
target += 1
return target
ob = Solution()
nums = [0, 5, 1]
print(ob.solve(nums)) # Output: 2
อินพุต
[0, 5, 1]
เอาต์พุต
2