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

โปรแกรมหา Index จุดสูง (Peak) ในลิสต์ตัวเลขใน Python

ให้ลิสต์ 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))

  1. วน i, num ใน enumerate(nums)
  2. ตรวจสอบเงื่อนไขตามตำแหน่ง
  3. เก็บ 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]