สมมติว่ามีอาร์เรย์ nums ต้องแบ่งเป็น left และ right ที่:
- ทุกค่าใน
left≤ ทุกค่าในright - ทั้งสองไม่ว่าง
leftมีขนาดน้อยที่สุด
คืนความยาวของ left
ตัวอย่าง: nums = [5,0,3,8,6] ผลลัพธ์ 3 (left=[5,0,3], right=[8,6])
วิธีแก้ปัญหา
mx := None, temp := None, nmx := None, temp2 := 0- วน
iในnums:- ถ้า
mx is None: เริ่มต้นค่า - ถ้า
i >= mx: เพิ่มtemp2, อัปเดตnmx - มิฉะนั้น:
temp = temp2, temp2 += 1, mx = nmx
- ถ้า
- คืน
temp + 1
ตัวอย่างโค้ด
def solve(nums):
mx = None
temp = None
nmx = None
temp2 = 0
for i in nums:
if mx is 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))
อินพุต
[5,0,3,8,6]
เอาต์พุต
3