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

पायथन में सरणी को पूरक बनाने के लिए न्यूनतम चाल खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक और मान सीमा की लंबाई की एक सरणी संख्या है। एक चाल में, हम अंकों से किसी भी मान को 1 और सीमा के बीच के किसी अन्य मान से बदल सकते हैं, जिसमें शामिल हैं। सरणी को पूरक कहा जाता है यदि सभी सूचकांकों के लिए i, nums[i] + nums[n-1-i] समान संख्या के बराबर हो। इसलिए हमें अंकों को पूरक बनाने के लिए आवश्यक चालों की न्यूनतम संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट संख्या =[1,4,2,3] सीमा =4 की तरह है, तो आउटपुट 1 होगा क्योंकि एक चाल में हम सूचकांक 1 से 2 पर तत्व बना सकते हैं, इसलिए सरणी [1,2] होगी ,2,3], फिर अंक [0] + अंक [3] =4, अंक [1] + अंक [2] =4, अंक [2] + अंक [1] =4, अंक [3] + अंक [ 0] =4

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=अंकों का आकार
  • मध्य :=n/2 का भागफल
  • zero_moves :=पूर्णांक प्रकार मान का एक खाली नक्शा
  • शुरू करें:=आकार की एक सरणी (2 * सीमा + 1), और 0 से भरें
  • अंत:=आकार की एक सरणी (2 * सीमा + 1), और 0 से भरें
  • res :=अनंत
  • मैं के लिए 0 से मध्य -1 की सीमा में, करो
    • x :=nums[i]
    • y :=nums[n - 1 - i]
    • zero_moves[x + y] :=Zero_moves[x + y] + 1
    • प्रारंभ बढ़ाएं[1 + न्यूनतम x, y] 1 तक
    • अंत बढ़ाएं[सीमा + अधिकतम x, y] 1 तक
  • अंतराल:=0
  • सीमा 2 से सीमा*2 तक के लक्ष्य के लिए
    • अंतराल:=अंतराल + प्रारंभ[लक्ष्य]
    • लागत:=2 *(मध्य-अंतराल) + अंतराल - शून्य_मूव्स[लक्ष्य]
    • res :=न्यूनतम रेस और लागत
    • अंतराल:=अंतराल - अंत[लक्ष्य]
  • रिटर्न रेस

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

from collections import defaultdict
def solve(nums, limit):
   n = len(nums)
   mid = n // 2

   zero_moves = defaultdict(int)

   start = [0] * (2 * limit + 1)
   end = [0] * (2 * limit + 1)
   res = float('inf')
   for i in range(mid):
      x = nums[i]
      y = nums[n - 1 - i]
      zero_moves[x + y] += 1
      start[min(x, y) + 1] += 1
      end[max(x, y) + limit] += 1

   intervals = 0
   for target in range(2, limit * 2 + 1):
      intervals += start[target]
      cost = 2 * (mid - intervals) + intervals - zero_moves[target]
      res = min(res, cost)
      intervals -= end[target]
   return res

nums = [1,4,2,3]
limit = 4
print(solve(nums, limit))

इनपुट

[1,4,2,3], 4

आउटपुट

1

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, जिसकी हमें सरणी के योग की गणना करने की आवश्यकता है। योग प्राप्त करने के लिए प्रत्येक अनुक्रमणिका में संपूर्ण सरणी और तत्व को पार करने के लिए पाशविक-बल दृष्टिकोण की चर्चा नीचे प्रत्येक अनुक्रमण

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें दिए गए सरणी के योग की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स अप्रोच का अनुसरण कर सकते हैं, यानी एक सूची को पार करना और प्रत्येक तत्व को एक खा

  1. 2D सरणी में k'th सबसे छोटा तत्व खोजने के लिए पायथन प्रोग्राम

    एक n×n उपयोगकर्ता इनपुट पूर्णांक मैट्रिक्स दिया गया है और k का मान दिया गया है। हमारा कार्य 2D सरणी में kth सबसे छोटे तत्व का पता लगाना है। यहाँ हम पाइथॉन में हेपैक मड्यूल.हीप क्यू (या हीपक) का उपयोग करते हैं। पायथन में, यह heapq मॉड्यूल का उपयोग करके उपलब्ध है। पायथन में इस मॉड्यूल की तकनीक यह है क