Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में सबसे लंबा बढ़ता हुआ सबसीक्वेंस

मान लीजिए हमारे पास पूर्णांकों की एक अनसॉर्टेड लिस्ट है। हमें सबसे लंबा बढ़ता हुआ सबसीक्वेंस ढूंढना है। इसलिए यदि इनपुट [10,9,2,5,3,7,101,18] है, तो आउटपुट 4 होगा, क्योंकि बढ़ता हुआ सबसीक्वेंस [2,3,7,101] है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • trail := लंबाई 0 से nums की लंबाई - 1 तक का एक ऐरे, और इसे 0 से भरें
  • size := 0
  • nums में प्रत्येक x के लिए
    • i := 0, j := size
    • जब तक i, j के बराबर नहीं है
      • mid := i + (j - i) / 2
      • यदि trails[mid] < x, तो i := mid + 1, अन्यथा j := mid
    • trails[i] := x
    • size := i + 1 और size का अधिकतम
  • size लौटाएं

बेहतर समझ के लिए निम्न कार्यान्वयन देखें -

उदाहरण

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)
        return size

ob1 = Solution()
print(ob1.lengthOfLIS([10, 9, 2, 5, 3, 7, 101, 18]))

इनपुट

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

आउटपुट

4
  1. - पायथन में मैट्रिक्स में सबसे लंबा बढ़ता पथ

    मान लीजिए हमारे पास एक मैट्रिक्स है; हमें सबसे लंबे बढ़ते पथ की लंबाई ढूंढनी है। प्रत्येक सेल से, हम चार दिशाओं में जा सकते हैं - बाएं, दाएं, ऊपर या नीचे। हम विकर्ण रूप से नहीं जा सकते या सीमा के बाहर नहीं जा सकते।इसलिए, यदि इनपुट इस तरह है994668211तो आउटपुट 4 होगा क्योंकि सबसे लंबा बढ़ता पथ [3, 4,

  1. - पायथन में शब्दकोश में सबसे लंबा शब्द

    मान लीजिए हमारे पास अंग्रेजी शब्दकोश को दर्शाने वाली शब्दों की एक सूची है, हमें दिए गए शब्द सूची में सबसे लंबा शब्द ढूंढना है जिसे शब्दों में अन्य शब्दों द्वारा एक समय में एक वर्ण जोड़कर बनाया जा सकता है। यदि एक से अधिक संभावित उत्तर हैं, तो सबसे छोटे लेक्सिकोग्राफिकल क्रम वाला सबसे लंबा शब्द वापस

  1. - पायथन में बढ़ता हुआ ट्रिपलेट सबसीक्वेंस

    मान लीजिए एक अनसॉर्टेड ऐरे है। हमें जांचना है कि उस ऐरे में लंबाई 3 का बढ़ता हुआ सबसीक्वेंस मौजूद है या नहीं। औपचारिक रूप से फ़ंक्शन को निम्न करना चाहिए - यदि i, j, k मौजूद हैं तो true लौटाएं ऐसे कि arr[i] < arr[j] < arr[k] दिया गया 0 ≤ i < j < k ≤ n-1 अन्यथा false लौटाएं। इसे हल करने के लिए, हम इ