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

पायथन में आसन्न तत्वों के सूचकांकों के न्यूनतम संभावित अंतर ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हम कह सकते हैं कि दो संख्याएं nums[i] <= nums[j] आसन्न हैं जब nums में (nums[i], nums[j]) के बीच कोई संख्या नहीं है। हमें न्यूनतम संभव |j-i| ज्ञात करना है जैसे कि nums[j] और nums[i] आसन्न हैं।

उदाहरण के लिए, nums = [1, -9, 6, -6, 2] के लिए आउटपुट 2 होगा (2 और 6 आसन्न हैं और 2 सूचकांक दूर हैं)।

एल्गोरिदम

  • indexes := मान से सूचकांकों की सूची का मैप
  • ans := len(A)
  • समान मानों के लिए, लगातार सूचकांकों का न्यूनतम अंतर लें
  • vals := सॉर्ट किए गए अद्वितीय मान
  • लगातार मानों vals[k] और vals[k+1] के लिए, दो-पॉइंटर का उपयोग करके उनके सूचकांकों के बीच न्यूनतम निरपेक्ष अंतर ज्ञात करें
  • ans वापस करें

उदाहरण

from collections import defaultdict
class Solution:
    def solve(self, A):
        indexes = defaultdict(list)
        for i, x in enumerate(A): indexes[x].append(i)
        ans = len(A)
        for row in indexes.values():
            for i in range(len(row)-1):
                ans = min(ans, row[i+1] - row[i])
        vals = sorted(indexes)
        for k in range(len(vals)-1):
            r1 = indexes[vals[k]]
            r2 = indexes[vals[k+1]]
            i = j = 0
            while i < len(r1) and j < len(r2):
                ans = min(ans, abs(r1[i] - r2[j]))
                if r1[i] < r2[j]: i += 1
                else: j += 1
        return ans

ob = Solution()
nums = [1, -9, 6, -6, 2]
print(ob.solve(nums))

इनपुट

[1, -9, 6, -6, 2]

आउटपुट

2
  1. - पायथन में सूची के तत्वों को बराबर करने के लिए न्यूनतम कुल लागत खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums और costs नामक दो संख्याओं की सूचियां हैं। अब एक ऑपरेशन पर विचार करें जहां हम nums[i] को costs[i] लागत पर बढ़ा या घटा सकते हैं। हम इन ऑपरेशनों को कितनी भी बार कर सकते हैं, और हम nums के सभी तत्वों को बराबर बनाना चाहते हैं। हमें आवश्यक न्यूनतम कुल लागत ढूंढनी है। उदाहरण के लि

  1. - पायथन में ऐरे के युग्मवार अंतर को जोड़कर खेल का विजेता खोजें

    मान लीजिए हमारे पास धनात्मक पूर्णांकों का एक ऐरे A है, जिसके तत्व अद्वितीय हैं। अब, दो खिलाड़ी P और Q एक खेल खेल रहे हैं। प्रत्येक चाल में, कोई भी खिलाड़ी ऐरे से दो संख्याएं a और b चुनता है और यदि |a - b| ऐरे में नहीं है, तो खिलाड़ी इस संख्या को ऐरे में जोड़ देता है। जब कोई खिलाड़ी चाल नहीं चल पाता

  1. - पायथन में इंडेक्स द्वारा सूची के तत्व खोजें

    दो सूचियों पर विचार करें। दूसरी सूची के तत्व संख्याएं हैं जिन्हें पहली सूची के तत्वों के लिए इंडेक्स पोजीशन के रूप में माना जाना चाहिए। इस परिदृश्य के लिए हमारे पास नीचे दिए गए पायथन प्रोग्राम हैं। map और getitem के साथ हम getitem मैजिक मेथड का उपयोग कर सकते हैं जिसका उपयोग सूची आइटम्स को एक्सेस कर