Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra mảng xen kẽ tăng giảm Python

Cho mảng nums. Kiểm tra mảng có xen kẽ: tăng chặt → giảm chặt → tăng chặt... (bắt đầu phải tăng). Nếu chỉ tăng chặt toàn bộ cũng hợp lệ.

Ví dụ: nums=[2,4,8,7,5,1,5,7,2,1] → True (2,4,8 tăng; 7,5,1 giảm; 5,7 tăng; 2,1 giảm).

Giải thuật (Kiểm tra điều kiện cần)

  1. Nếu nums[1] <= nums[0] → False (phải bắt đầu bằng tăng)
  2. Kiểm tra không có hai phần tử liền kề bằng nhau
  3. Điều kiện này cần nhưng chưa đủ (code gốc thiếu kiểm tra xu hướng tăng/giảm xen kẽ)

Lưu ý: Code gốc chỉ kiểm tra không có phần tử bằng nhau liền kề, chưa kiểm tra đầy đủ xen kẽ tăng/giảm. Cần bổ sung logic theo dõi trạng thái tăng/giảm.

Ví dụ triển khai (đã cải tiến)

def solve(nums):
    if len(nums) < 2:
        return True
    if nums[1] <= nums[0]:
        return False
    
    increasing = True  # Bắt đầu bằng tăng
    for i in range(1, len(nums)):
        if nums[i] == nums[i-1]:
            return False
        if increasing:
            if nums[i] < nums[i-1]:
                increasing = False  # Chuyển sang giảm
        else:
            if nums[i] > nums[i-1]:
                increasing = True   # Chuyển sang tăng
    return True

print(solve([2, 4, 8, 7, 5, 1, 5, 7, 2, 1]))

Đầu vào

[2, 4, 8, 7, 5, 1, 5, 7, 2, 1]

Đầu ra

True