मान लीजिए कि हमारे पास पूर्णांकों की एक क्रमबद्ध सूची नहीं है। हमें सबसे लंबे समय तक बढ़ते क्रम को खोजना होगा। तो अगर इनपुट [10,9,2,5,3,7,101,18] है, तो आउटपुट 4 होगा, क्योंकि बढ़ते क्रम [2,3,7,101]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ट्रेल :=लंबाई 0 से लेकर अंकों की लंबाई -1 तक की एक सरणी, और इसे 0 से भरें
- आकार :=0
- अंकों में x के लिए
- i :=0, j :=size
- जबकि मैं 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