Giả sử chúng ta có một số mảng, chúng ta phải phân vùng nó thành hai mảng con khác nhau được gọi là trái và phải sao cho -
-
Mỗi phần tử trong mảng con bên trái nhỏ hơn hoặc bằng mỗi phần tử trong mảng con bên phải.
-
mảng con bên trái và bên phải không trống.
-
mảng con bên trái có kích thước nhỏ nhất có thể.
Chúng ta phải tìm độ dài bên trái sau khi phân vùng như vậy.
Vì vậy, nếu đầu vào là nums =[5,0,3,8,6], thì đầu ra sẽ là 3 vì mảng bên trái sẽ là [5,0,3] và mảng con bên phải sẽ là [8,6].
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
mx:=null, temp:=null, nmx:=null
-
temp2:=0
-
đối với mỗi tôi trong nums, hãy thực hiện
-
nếu mx giống với null thì
-
mx:=i
-
nmx:=i
-
temp:=temp2
-
temp2:=temp2 + 1
-
chuyển sang lần lặp tiếp theo
-
-
nếu tôi> =mx, thì
-
temp2:=temp2 + 1
-
nếu tôi> nmx, thì
-
nmx:=i
-
-
chuyển sang lần lặp tiếp theo
-
-
nếu không,
-
temp:=temp2
-
temp2:=temp2 + 1
-
mx:=nmx
-
chuyển sang lần lặp tiếp theo
-
-
-
trả về nhiệt độ + 1
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums):
mx = None
temp = None
nmx = None
temp2 = 0
for i in nums:
if(mx==None):
mx = i
nmx = i
temp = temp2
temp2+=1
continue
if(i>=mx):
temp2+=1
if(i>nmx):
nmx = i
continue
else:
temp = temp2
temp2+=1
mx = nmx
continue
return temp+1
nums = [5,0,3,8,6]
print(solve(nums)) Đầu vào
[5,0,3,8,6]
Đầu ra
3