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

पायथन का उपयोग करके सर्कुलर ट्रैक में सबसे अधिक देखे जाने वाले सेक्टर को खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक संख्या n और एक सरणी है जिसे राउंड कहा जाता है। हमारे पास एक गोलाकार ट्रैक है जिसमें 1 से n तक लेबल किए गए n विभिन्न सेक्टर हैं। अब मान लीजिए इस ट्रैक पर एक रेस होगी, रेस में मी अलग-अलग राउंड होंगे। छठा दौर सेक्टर राउंड [i - 1] से शुरू होता है और सेक्टर राउंड [i] पर समाप्त होता है। उदाहरण के लिए, यदि राउंड 1 सेक्टर राउंड [0] से शुरू होता है और सेक्टर राउंड [1] पर समाप्त होता है। इसलिए हमें सबसे अधिक देखे जाने वाले क्षेत्रों को आरोही क्रम में क्रमबद्ध करना होगा। (ट्रैक नंबर वामावर्त दिशा में सेक्टर नंबरों के आरोही क्रम में हैं)

इसलिए, यदि इनपुट n =4 राउंड =[1,3,1,2] जैसा है, तो आउटपुट [1, 2]

होगा।

पायथन का उपयोग करके सर्कुलर ट्रैक में सबसे अधिक देखे जाने वाले सेक्टर को खोजने का कार्यक्रम

क्योंकि दौड़ सेक्टर 1 से शुरू होती है। विज़िट किए गए सेक्टरों का क्रम इस प्रकार है:[1,2,3 (पहले दौर का अंत), 4,1 (दूसरे दौर का अंत), 2 (तीसरे दौर का अंत)]। यहां दोनों सेक्टर 1 और 2 का दो बार दौरा किया जाता है और वे सबसे अधिक देखे जाने वाले सेक्टर हैं। और सेक्टर 3 और 4 का दौरा केवल एक बार किया जाता है।

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

  • d :=एक नया नक्शा

  • j के लिए 1 से n की सीमा में, करें

    • डी [जे]:=0

  • d[राउंड[0]] :=1

  • मेरे लिए 1 से लेकर राउंड के आकार -1 तक, करें

    • अगर राउंड[i]> राउंड[i-1], तो

      • j के लिए रेंज राउंड में[i-1]+1 से राउंड[i]+1, do

        • d[j] :=d[j] + 1

    • अन्यथा,

      • j के लिए रेंज राउंड में[i-1]+1 से n, do

        • d[j] :=d[j] + 1

      • j के लिए 1 से लेकर राउंड तक[i], करें

        • d[j] :=d[j] + 1

  • curr :=d[राउंड[0]]

  • आउट :=[राउंड[0]]

  • 1 से n की सीमा में i के लिए, करें

    • अगर मैं राउंड [0] के समान नहीं हूं, तो

      • अगर d[i]> curr, तब

        • वक्र:=डी[i]

        • बाहर:=[i]

      • अन्यथा जब d[i] curr के समान है, तब

        • मुझे बाहर के साथ संलग्न करें

  • छँटाई के बाद वापस लौटें

उदाहरण (पायथन)

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

def solve(n, rounds):
   d = {}
   for j in range(1,n+1):
      d[j] = 0
   d[rounds[0]] = 1
   for i in range(1, len(rounds)):
      if rounds[i] > rounds[i-1]:
         for j in range(rounds[i-1]+1, rounds[i]+1):
            d[j] += 1
      else:
         for j in range(rounds[i-1]+1,n+1):
            d[j] += 1
         for j in range(1,rounds[i]+1):
            d[j] += 1

   curr = d[rounds[0]]
   out = [rounds[0]]
   for i in range(1,n+1):
      if i != rounds[0]:
         if d[i] > curr:
            curr = d[i]
            out = [i]
         elif d[i] == curr:
            out = out + [i]
   return(sorted(out))

n = 4
rounds = [1,3,1,2]
print(solve(n, rounds))

इनपुट

4, [1,3,1,2]

आउटपुट

[1, 2]

  1. आयत का योग ज्ञात करने का कार्यक्रम जिसका योग पायथन में अधिकतम k है

    मान लीजिए कि हमारे पास 2d मैट्रिक्स है और दूसरा मान k है, हमें आयत का सबसे बड़ा योग ज्ञात करना है जहां योग k है। तो, अगर इनपुट पसंद है 5 −2 7 10 और k =15, तो आउटपुट 12 होगा, क्योंकि हम आयत [5, 7] को 15 से कम 12 का योग प्राप्त करने के लिए ले सकते हैं। इसे हल करने के लिए, हम इन चरणों का पालन कर

  1. अजगर में एक परिपत्र सूची में गैर-आसन्न तत्वों का योग खोजने के लिए कार्यक्रम

    मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है जो एक गोलाकार सूची का प्रतिनिधित्व कर रहा है। हमें गैर-आसन्न संख्याओं का सबसे बड़ा योग ज्ञात करना है। इसलिए, यदि इनपुट nums =[10, 3, 4, 8] की तरह है, तो आउटपुट 14 होगा, क्योंकि हम 10 और 4 ले सकते हैं। हम 10 और 8 नहीं ले सकते क्योंकि वे

  1. पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बीएसटी है, और हमारे पास बाएं और दाएं सीमाएं एल और आर भी हैं, हमें रूट में उन सभी नोड्स की गिनती ढूंढनी है जिनके मान एल और आर (समावेशी) के बीच मौजूद हैं। तो, अगर इनपुट पसंद है l =7, r =13, तो आउटपुट 3 होगा, क्योंकि तीन नोड हैं:8, 10, 12. इसे हल करने के लिए, हम इन चरणों