ให้ลิสต์ nums ความยาว ≥ 2 หา Index ทุกตัวที่เป็น Peak:
- Index 0:
nums[0] > nums[1] - Index n-1:
nums[n-1] > nums[n-2] - กลาง:
nums[i-1] < nums[i] > nums[i+1]
ตัวอย่าง: nums=[5,6,7,6,9] → [2,4]
ขั้นตอน (One Pass O(n))
- วน
i, numในenumerate(nums) - ตรวจสอบเงื่อนไขตามตำแหน่ง
- เก็บ Index ที่เป็น Peak
ตัวอย่างโค้ด
def solve(nums):
ans = []
n = len(nums)
if n == 1:
return ans
for i, num in enumerate(nums):
if i > 0 and i < n - 1:
if nums[i-1] < num > nums[i+1]:
ans.append(i)
if i == 0:
if num > nums[i+1]:
ans.append(i)
if i == n - 1:
if num > nums[i-1]:
ans.append(i)
return ans
nums = [5, 6, 7, 6, 9]
print(solve(nums)) # Output: [2, 4]อินพุต
[5, 6, 7, 6, 9]
เอาต์พุต
[2, 4]