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

पायथन में ठीक k यूनिक तत्वों वाली सबलिस्ट की संख्या गिनने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक लिस्ट है और एक मान k है, हमें उन सबलिस्ट की संख्या ढूंढनी है जिनमें ठीक k यूनिक संख्याएं हों।

उदाहरण के लिए, यदि इनपुट nums = [2, 2, 3, 4], k = 2 है, तो आउटपुट 3 होगा, क्योंकि हमारे पास सबलिस्ट हैं: [2, 2, 3], [2, 3], [3, 4]।

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

इस समस्या को हल करने के लिए हम स्लाइडिंग विंडो तकनीक का उपयोग करेंगे:

  • count(K) फंक्शन परिभाषित करें:
    • slot := एक खाली मैप (Counter), डिफ़ॉल्ट मान 0
    • i := 0, res := 0
    • प्रत्येक इंडेक्स j और मान x के लिए nums में:
      • slot[x] := slot[x] + 1
      • जब तक slot का आकार > K है:
        • slot[nums[i]] := slot[nums[i]] - 1
        • यदि slot[nums[i]] == 0 है, तो slot[nums[i]] हटाएं
        • i := i + 1
      • res := res + j - i + 1
    • res लौटाएं
  • मुख्य मेथड से count(k) - count(k - 1) लौटाएं

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

from collections import Counter

class Solution:
    def solve(self, nums, k):
        def count(K):
            slot = Counter()
            i = res = 0
            for j, x in enumerate(nums):
                slot[x] += 1
                while len(slot) > K:
                    slot[nums[i]] -= 1
                    if slot[nums[i]] == 0:
                        del slot[nums[i]]
                    i += 1
                res += j - i + 1
            return res
        return count(k) - count(k - 1)

ob = Solution()
nums = [2, 2, 3, 4]
k = 2
print(ob.solve(nums, k))

इनपुट

[2, 2, 3, 4], 2

आउटपुट

3
  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5

  1. पायथन में दिए गए एज को शामिल करने वाले अद्वितीय पथों की संख्या गिनने का प्रोग्राम पायथन में दिए गए एज को शामिल करने वाले अद्वितीय पथों की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास (u, v) के रूप में एज की सूची है जो एक ट्री दर्शाती है। प्रत्येक एज के लिए हमें उन अद्वितीय पथों की कुल संख्या ज्ञात करनी है जिनमें वह एज शामिल है, उसी क्रम में जैसे इनपुट में दिया गया है। उदाहरण के लिए, यदि इनपुट है edges = [[0, 1],[0, 2],[1, 3],[1, 4]], तो आउटपुट [6, 4, 4, 4] ह

  1. पायथन में 0 से n मानों के साथ बनने वाले अद्वितीय बाइनरी सर्च ट्री की संख्या गिनने का प्रोग्राम पायथन में 0 से n मानों के साथ बनने वाले अद्वितीय बाइनरी सर्च ट्री की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें उन अद्वितीय BST की संख्या ढूंढनी है जिन्हें हम [0, n) से संख्याओं के साथ उत्पन्न कर सकते हैं। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9+7 से मॉड करें। उदाहरण के लिए, यदि इनपुट n = 3 है, तो आउटपुट 5 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: num