Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหารายการย่อยที่สั้นที่สุดดังนั้นหลังจากจัดเรียงรายการทั้งหมดจะถูกจัดเรียงในPython


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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 :=ฉัน
  • ถ้า 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