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

पायथन में रैखिक समय में kth सबसे छोटा तत्व खोजने का प्रोग्राम

मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमारे पास एक और मान k भी है, हमें सूची में kth (0 से शुरू) सबसे छोटा तत्व ढूंढना है। हमें इस समस्या को औसतन O(n) समय में हल करना है।

उदाहरण के लिए, यदि इनपुट है nums = [6, 4, 9, 3, 1], k = 2, तो आउटपुट 4 होगा, क्योंकि सॉर्ट करने के बाद सूची [1, 3, 4, 6, 9] जैसी होगी, kth सबसे छोटा तत्व 4 है।

एल्गोरिदम (मैक्स हीप का उपयोग करके)

  1. maxHeap := एक नया खाली हीप
  2. i के लिए 0 से k तक:
    • nums[i] को maxHeap में डालें
  3. i के लिए k+1 से len(nums)-1 तक:
    • यदि nums[i] < -maxHeap[0] (चूंकि पायथन का heapq मिन-हीप है, हम नेगेटिव मानों का उपयोग करते हैं):
      • maxHeap से टॉप हटाएं
      • nums[i] को maxHeap में डालें
  4. -maxHeap[0] लौटाएं

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

from heapq import heappop, heappush

def solve(nums, k):
    maxHeap = []
    for i in range(k + 1):
        heappush(maxHeap, -nums[i])
    for i in range(k + 1, len(nums)):
        if nums[i] < -maxHeap[0]:
            heappop(maxHeap)
            heappush(maxHeap, -nums[i])
    return -maxHeap[0]

nums = [6, 4, 9, 3, 1]
k = 2
print(solve(nums, k))  # आउटपुट: 4

इनपुट

[6, 4, 9, 3, 1], 2

आउटपुट

4
  1. पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें ऐरे में सबसे बड़ा एलिमेंट ढूंढने की आवश्यकता है। दृष्टिकोण हम max को पहले एलिमेंट के रूप में इनिशियलाइज़ करते हैं। इसके बाद, हम दिए गए ऐरे

  1. पायथन प्रोग्राम में लीनियर सर्च पायथन प्रोग्राम में लीनियर सर्च

    इस लेख में, हम पायथन 3.x में लीनियर सर्च और इसके कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। एल्गोरिदम दिए गए arr[] के बाएंmost एलिमेंट से शुरू करें और एक-एक करके एलिमेंट x की तुलना arr[] के प्रत्येक एलिमेंट से करें। यदि x किसी एलिमेंट से मेल खाता है, तो इंडेक्स वैल्यू वापस करें। यदि x, arr[]

  1. पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में लीनियर सर्च और इसके कार्यान्वयन के बारे में जानेंगे।एल्गोरिदमदिए गए arr[] के बाएं सबसे तत्व से शुरू करें और एक-एक करके तत्व x की तुलना arr[] के प्रत्येक तत्व से करेंयदि x किसी तत्व से मेल खाता है, तो इंडेक्स मान वापस करें।यदि x, arr[] के किसी भी त