मान लीजिए हमारे पास संख्याओं की एक सूची है। हमें सबसे लंबे समय तक बढ़ते क्रम की लंबाई ज्ञात करनी है। तो अगर इनपुट [6, 1, 7, 2, 8, 3, 4, 5] जैसा है, तो आउटपुट 5 होगा, क्योंकि सबसे लंबे समय तक बढ़ने वाला क्रम [2,3,4,5,6] है।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
टेल्स नामक एक सरणी बनाएं जिसका आकार अंकों के समान हो, और इसे 0 से भरें।
-
आकार :=0
-
अंक सरणी में प्रत्येक तत्व x के लिए -
-
मैं:=0, जे:=आकार
-
जबकि i, j के समान नहीं है, तब
-
मध्य :=i + (j – i)/2
-
अगर पूंछ [मध्य] <एक्स, तो मैं:=मध्य + 1 अन्यथा जे:=मध्य
-
-
पूंछ [i] :=x
-
आकार :=अधिकतम + 1 और आकार
-
-
वापसी का आकार।
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def solve(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) return size ob = Solution() nums = [7, 2, 8, 3, 9, 4, 5, 6] print(ob.solve(nums))
इनपुट
[7, 2, 8, 3, 9, 4, 5, 6]
आउटपुट
5