Giả sử chúng ta có một mảng với N số, chúng ta phải kiểm tra xem 3 phần tử sao cho b [i]
Vì vậy, nếu đầu vào là [13, 12, 11, 6, 7, 3, 31], thì đầu ra sẽ là [6,7,31]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- n:=kích thước của A
- tối đa:=n-1, tối thiểu:=0
- small:=một mảng có kích thước 1000 và điền bằng 0
- nhỏ hơn [0]:=-1
- đối với tôi trong phạm vi từ 1 đến n, thực hiện
- nếu A [i] <=A [tối thiểu], thì
- tối thiểu:=i
- nhỏ hơn [i]:=-1
- nếu không,
- nhỏ hơn [i]:=tối thiểu
- nếu A [i] <=A [tối thiểu], thì
- lớn hơn:=một mảng có kích thước 1000 và điền bằng 0
- lớn hơn [n-1]:=-1
- đối với tôi trong phạm vi n-2 đến -1, giảm đi 1, thực hiện
- nếu A [i]> =A [tối đa], thì
- tối đa:=i
- lớn hơn [i]:=-1
- nếu không,
- lớn hơn [i]:=tối đa
- nếu A [i]> =A [tối đa], thì
- đối với tôi trong phạm vi từ 0 đến n, thực hiện
- nếu [i] nhỏ hơn không giống -1 và lớn hơn [i] không giống -1, thì
- trả về A [nhỏ hơn [i]], A [i], A [lớn hơn [i]]
- nếu [i] nhỏ hơn không giống -1 và lớn hơn [i] không giống -1, thì
- trả về "Không có gì"
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def find_inc_seq(A): n = len(A) maximum = n-1 minimum = 0 smaller = [0]*10000 smaller[0] = -1 for i in range(1, n): if (A[i] <= A[minimum]): minimum = i smaller[i] = -1 else: smaller[i] = minimum greater = [0]*10000 greater[n-1] = -1 for i in range(n-2, -1, -1): if (A[i] >= A[maximum]): maximum = i greater[i] = -1 else: greater[i] = maximum for i in range(0, n): if smaller[i] != -1 and greater[i] != -1: return A[smaller[i]], A[i], A[greater[i]] return "Nothing" arr = [13, 12, 11, 6, 7, 3, 31] print(find_inc_seq(arr) )
Đầu vào
[13, 12, 11, 6, 7, 3, 31]
Đầu ra
(6, 7, 31)