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

पायथन में k ऑपरेशन्स द्वारा दोहराए गए नंबरों वाले सबसे लंबे सबलिस्ट की लंबाई ढूंढना


मान लीजिए हमारे पास nums नामक एक लिस्ट और एक मान k है, अब एक ऑपरेशन पर विचार करें जिसके द्वारा हम लिस्ट में किसी भी नंबर का मान अपडेट कर सकते हैं। हमें सबसे लंबे सबलिस्ट की लंबाई ढूंढनी है जिसमें अधिकतम k ऑपरेशन करने के बाद दोहराए गए नंबर हों।

उदाहरण के लिए, यदि इनपुट है nums = [8, 6, 6, 4, 3, 6, 6], k = 2, तो आउटपुट होगा 6, क्योंकि हम 4 और 3 को 6 में बदल सकते हैं, जिससे यह ऐरे [8, 6, 6, 6, 6, 6, 6] बन जाता है, और सभी 6s वाले सबलिस्ट की लंबाई 6 है।

समाधान दृष्टिकोण

यह स्लाइडिंग विंडो तकनीक का उपयोग करके हल किया जाता है। हम एक विंडो बनाए रखते हैं जहां सबसे अधिक बार आने वाले तत्व की गिनती + k >= विंडो आकार होता है।

  • यदि nums खाली है, तो 0 लौटाएं।
  • एक डिक्शनरी num_count से प्रत्येक नंबर की गिनती ट्रैक करें।
  • max_count = विंडो में किसी भी नंबर की अधिकतम आवृत्ति।
  • विंडो का विस्तार करें (end पॉइंटर)। यदि end - start + 1 > max_count + k, तो विंडो को सिकोड़ें (start पॉइंटर बढ़ाएं)।
  • अंत में end - start + 1 लौटाएं।

पायथन कार्यान्वयन

from collections import defaultdict

def solve(nums, k):
    if not nums:
        return 0
    num_count = defaultdict(int)
    max_count = 0
    start = 0
    for end, num in enumerate(nums):
        num_count[num] += 1
        max_count = max(max_count, num_count[num])
        if end - start + 1 > max_count + k:
            num_count[nums[start]] -= 1
            start += 1
    return end - start + 1

nums = [8, 6, 6, 4, 3, 6, 6]
k = 2
print(solve(nums, k))

इनपुट

[8, 6, 6, 4, 3, 6, 6], 2

आउटपुट

6

  1. पायथन में DAG में बिना नोड दोहराव के सबसे लंबे पथ की लंबाई खोजने का प्रोग्राम पायथन में DAG में बिना नोड दोहराव के सबसे लंबे पथ की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक डायरेक्टेड एसाइक्लिक ग्राफ (DAG) है जिसे एडजेसेंसी लिस्ट द्वारा दर्शाया गया है। हमें ग्राफ में बिना नोड दोहराव के सबसे लंबे पथ को ढूंढना है।उदाहरण के लिए, यदि इनपुट ग्राफ है:तो आउटपुट 4 होगा, क्योंकि पथ 0 → 1 → 3 → 4 → 2 है जिसकी लंबाई 4 है।समाधान दृष्टिकोणइस समस्या को हल करने

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

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

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

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें एक या शून्य तत्वों को हटाकर प्राप्त की जा सकने वाली सख्ती से बढ़ती सन्निकट सबलिस्ट की अधिकतम लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट nums = [30, 11, 12, 13, 14, 15, 18, 17, 32] है, तो आउटपुट 7 होगा, क्योंकि जब हम सूची में 18 को हटाते हैं