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

Python में सरणी से तत्व हटाकर प्राप्त किए जा सकने वाले अधिकतम अंक ढूंढना


मान लीजिए हमारे पास N तत्वों वाली एक सरणी A है, हमारे पास दो पूर्णांक l और r भी हैं जहां, 1 ≤ ax ≤ 10^5 और 1 ≤ l ≤ r ≤ N। सरणी से एक तत्व लेना मान लीजिए ax और उसे हटाना, और ax+1, ax+2 ... ax+R और ax-1, ax-2 ... ax-L के बराबर सभी तत्वों को भी उस सरणी से हटाना। ऐसा करने से ax अंक खर्च होंगे। हमें सरणी के सभी तत्वों को हटाने के बाद कुल लागत को अधिकतम करना है।

तो, यदि इनपुट A = [2,4,3,10,5], l = 1, r = 2 की तरह है, तो आउटपुट 18 होगा।

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

  • n := सरणी का आकार

  • max_val := 0

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

    • max_val := max_val, array[i] का अधिकतम

  • count_list := (max_val + 1) आकार की एक सरणी, 0 से भरें

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

    • count_list[array[i]] := count_list[array[i]] + 1

  • res := (max_val + 1) आकार की एक सरणी, 0 से भरें

  • res[0] := 0

  • left := left, right का न्यूनतम

  • num के लिए 1 से max_val + 1 की सीमा में, करें

    • k := num - left - 1, 0 का अधिकतम

    • res[num] := res[num - 1], num * count_list[num] + res[k] का अधिकतम

  • res[max_val] वापस करें

उदाहरण

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

def get_max_cost(array, left, right) :     n = len(array)     max_val = 0     for i in range(n) :         max_val = max(max_val, array[i])     count_list = [0] * (max_val + 1)     for i in range(n) :         count_list[array[i]] += 1     res = [0] * (max_val + 1)     res[0] = 0     left = min(left, right)     for num in range(1, max_val + 1) :         k = max(num - left - 1, 0)         res[num] = max(res[num - 1], num * count_list[num] + res[k])     return res[max_val] array = [2,4,3,10,5] left = 1 right = 2 print(get_max_cost(array, left, right))

इनपुट

[2,4,3,10,5] , 1, 2

आउटपुट

18

  1. - Python में डुप्लिकेट सरणी से खोया हुआ तत्व ढूंढना

    मान लीजिए हमारे पास दो सरणियाँ हैं जो एक-दूसरे की डुप्लिकेट हैं सिवाय एक तत्व के, तो, दिए गए सरणियों में से एक से एक तत्व गायब है, हमें उस लापता तत्व को ढूंढना है। तो, यदि इनपुट A = [2, 5, 6, 8, 10], B = [5, 6, 8, 10] की तरह है, तो आउटपुट 2 होगा क्योंकि 2 दूसरी सरणी से गायब है। इसे हल करने के लिए, ह

  1. - Python में 1 से N तक के तत्वों वाली सरणी में चार लापता संख्याएं ढूंढना

    मान लीजिए हमारे पास अलग-अलग संख्याओं की एक सरणी है जहां प्रत्येक संख्या [1, N] सीमा में है, सरणी का आकार (N-4) है और कोई एकल तत्व दोहराया नहीं गया है। तो, हम समझ सकते हैं कि 1 से N तक चार संख्याएं सरणी में गायब हैं। हमें इन 4 लापता संख्याओं को क्रमबद्ध तरीके से ढूंढना है। तो, यदि इनपुट A =[2, 8, 4,

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

    एक पूर्णांक सूची दी गई है, हमारा कार्य सूची में N सबसे बड़े तत्व ढूंढना है। उदाहरण इनपुट : [40, 5, 10, 20, 9] N = 2 आउटपुट: [40, 20] एल्गोरिदम चरण 1: एक पूर्णांक सूची और सबसे बड़ी संख्या की संख्या इनपुट करें। चरण 2: पहले सूची को N बार पार करें। चरण 3: प्रत्येक पारगमन में सबसे बड़ा मान ढूंढें और इसे