สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องหาความยาวของรายการย่อยที่สั้นที่สุดในหน่วย num หากรายการย่อยถูกจัดเรียง ตัวเลขอาร์เรย์ทั้งหมดจะถูกจัดเรียงจากน้อยไปมาก
ดังนั้น หากอินพุตเท่ากับ nums =[1,2,5,4,9,10] ผลลัพธ์จะเป็น 2 เนื่องจากการจัดเรียงรายการย่อย [4, 3] จะได้ [0, 1, 3, 4 , 8, 9]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- f:=-1, l:=-1
- lst:=เรียงลำดับรายการ nums
- สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
- ถ้า nums[i] ไม่เหมือนกับ lst[i] แล้ว
- ถ้า f เหมือนกับ -1 แล้ว
- f :=ฉัน
- มิฉะนั้น
- l :=ฉัน
- ถ้า f เหมือนกับ -1 แล้ว
- ถ้า nums[i] ไม่เหมือนกับ lst[i] แล้ว
- ถ้า l เหมือนกับ -1 และ f เหมือนกับ -1 แล้ว
- คืน 0
- ผลตอบแทน l - f + 1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): f=-1 l=-1 lst=sorted(nums) for i in range(len(nums)): if nums[i]!=lst[i]: if f == -1: f=i else: l=i if l == -1 and f == -1: return 0 return l-f+1 ob = Solution() print(ob.solve([1,2,5,4,9,10]))
อินพุต
[1,2,5,4,9,10]
ผลลัพธ์
2