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

ลำดับที่ยาวที่สุดใน Python


สมมติว่าเรามีรายการจำนวนเต็มที่ไม่เรียงลำดับ เราต้องหาลำดับต่อมาที่เพิ่มขึ้นนานที่สุด ดังนั้นหากอินพุตคือ [10,9,2,5,3,7,101,18] ผลลัพธ์จะเป็น 4 เนื่องจากลำดับที่เพิ่มขึ้นคือ [2,3,7,101]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • trail :=อาร์เรย์ที่มีความยาว 0 ถึงความยาวของ nums – 1 และเติมค่านี้ด้วย 0
  • ขนาด :=0
  • สำหรับ x เป็น nums
    • i :=0, j :=ขนาด
    • ในขณะที่ฉันไม่ใช่เจ
      • กลาง :=i + (j - i) / 2
      • ถ้าเทรล[กลาง]
    • เส้นทาง[i] :=x
    • ขนาด :=สูงสุดของ i + 1 และขนาด
  • ขนาดผลตอบแทน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution(object):
   def lengthOfLIS(self, nums):
      tails =[0 for i in range(len(nums))]
      size = 0
      for x in nums:
         i=0
         j=size
         while i!=j:
            mid = i + (j-i)//2
            if tails[mid]< x:
               i= mid+1
            else:
               j = mid
               tails[i] = x
               size = max(i+1,size)
               #print(tails)
      return size
ob1 = Solution()
print(ob1.lengthOfLIS([10,9,2,5,3,7,101,18]))

อินพุต

[10,9,2,5,3,7,101,18]

ผลลัพธ์

4