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