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

Python - Tìm phần tử trong mảng sao cho các phần tử tạo thành dãy giảm chặt và tăng chặt


Giả sử chúng ta có mảng các số dương; chúng ta phải kiểm tra một điểm/mục mà trước đó các mục tạo thành dãy giảm chặt hoàn toàn, theo sau là dãy tăng chặt hoàn toàn. Các thuộc tính: Độ dài mỗi dãy tối thiểu là 2. Giá trị cuối của dãy giảm là giá trị đầu của dãy tăng.

Ví dụ, nếu đầu vào là {5,4,3,4}, thì đầu ra là 3, vì {5,4,3} giảm chặt, {3,4} tăng chặt.

Giải pháp:

  • increase=1, decrease=1
  • n = len(array)
  • Duyệt i từ 1 đến n-1:
  • Nếu array[i] < array[i-1]: nếu increase==1 thì decrease++ else return -1
  • Ngược lại nếu array[i] > array[i-1]: nếu increase==1 thì pt = array[i-1]; nếu decrease>=2 thì increase++ else return -1
  • Nếu array[i] == array[i-1]: return -1
  • Cuối cùng nếu increase>=2 và decrease>=2 thì return pt else return -1

Ví dụ

def search_element(array):
    increase = 1
    decrease = 1
    n = len(array)
    for i in range(1, n):
        if(array[i] < array[i-1]):
            if increase == 1:
                decrease = decrease + 1
            else:
                return -1
        elif(array[i] > array[i-1]):
            if increase == 1:
                pt = array[i-1]
            if decrease >= 2:
                increase = increase + 1
            else:
                return -1
        elif(array[i] == array[i-1]):
            return -1
    if(increase >= 2 and decrease >= 2):
        return pt
    else:
        return -1

array = [5,4,3,4]
element = search_element(array)
print(element)

Đầu vào

[5,4,3,4]

Đầu ra

3