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

पायथन में स्थिर अंतर वाले सबसे लंबे अंकगणितीय सबसीक्वेंस की लंबाई खोजने का प्रोग्राम

मान लीजिए हमारे पास संख्याओं की एक सूची nums और एक मान diff है, हमें उस सबसे लंबे अंकगणितीय सबसीक्वेंस की लंबाई ढूंढनी है जहां सबसीक्वेंस में किन्हीं दो लगातार संख्याओं का अंतर diff के बराबर हो।

उदाहरण के लिए, यदि इनपुट है nums = [-1, 1, 4, 7, 2, 10], diff = 3, तो आउटपुट 4 होगा, क्योंकि हम सबसीक्वेंस [1, 4, 7, 10] चुन सकते हैं।

एल्गोरिदम

  1. seen := एक खाली डिक्शनरी, डिफ़ॉल्ट मान 0
  2. mx := 0
  3. प्रत्येक x के लिए nums में:
    • यदि x - diff seen में है, तो seen[x] := seen[x - diff] + 1
    • अन्यथा, seen[x] := 1
    • mx := max(mx, seen[x])
  4. mx लौटाएं

उदाहरण कार्यान्वयन

from collections import defaultdict

def solve(nums, diff):
    seen = defaultdict(int)
    mx = 0
    for x in nums:
        if x - diff in seen:
            seen[x] = seen[x - diff] + 1
        else:
            seen[x] = 1
        mx = max(mx, seen[x])
    return mx

nums = [-1, 1, 4, 7, 2, 10]
diff = 3
print(solve(nums, diff))  # आउटपुट: 4

इनपुट

[-1, 1, 4, 7, 2, 10], 3

आउटपुट

4
  1. - पायथन में सबसे लंबी बढ़ती हुई उप-अनुक्रम की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास संख्याओं की एक सूची है। हमें सबसे लंबी बढ़ती हुई उप-अनुक्रम (Longest Increasing Subsequence) की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट [6, 1, 7, 2, 8, 3, 4, 5] है, तो आउटपुट 5 होगा, क्योंकि सबसे लंबी बढ़ती हुई उप-अनुक्रम [2, 3, 4, 5, 6] है। इसे हल करने के लिए हम निम्न चरणों का

  1. - पायथन में सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, हमें सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट S = helloworld, T = hellorld है, तो आउटपुट 8 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: c := एक नया मैप, d := एक नया मैप। i को 0 से len(a) - 1 तक लूप म

  1. - पायथन में सबसे लंबे संतुलित उप-अनुक्रम की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें ब्रैकेट्स ( और ) हैं, हमें संतुलित ब्रैकेट्स के सबसे लंबे उप-अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट s = ())(()( है, तो आउटपुट 4 होगा, क्योंकि हम ()() जैसा उप-अनुक्रम ले सकते हैं। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: res := 0, n