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

Kiểm tra mảng đẹp (beautiful array) trong Python

Cho mảng nums các phần tử duy nhất. Mảng được gọi là đẹp nếu thỏa mãn:

  1. Các phần tử nằm trong khoảng 1 đến n (n là độ dài mảng).
  2. Mảng không được sắp xếp tăng dần.

Ví dụ: [2,6,1,5,3,4] → True.

Giải thuật

  • Kiểm tra trùng lặp: nếu có phần tử bằng phần tử trước → False.
  • Theo dõi xem mảng có sắp xếp tăng dần không (nếu có phần tử giảm thì is_sorted = False).
  • Tính tổng các phần tử, so sánh với tổng 1..n (n*(n+1)//2).
  • Trả về True nếu không sắp xếp tăng và tổng đúng.

Mã ví dụ

def solve(nums):
    n = len(nums)
    total = nums[0]
    is_sorted = True
    for i in range(1, n):
        if nums[i] == nums[i - 1]:
            return False
        if nums[i] < nums[i - 1]:
            is_sorted = False
        total += nums[i]
    if is_sorted:
        return False
    return total == (n * (n + 1) // 2)

nums = [2,6,1,5,3,4]
print(solve(nums))

Đầu vào

[2,6,1,5,3,4]

Đầu ra

True