Python 中的陣列劃分 I
我們給定陣列,假設是 [1,2,3,4] 的 arr[]。我們必須將整數元素分組對齊,如 (a1,b1),(a2,b2)....(an,bn),使陣列中所有元素的 min(ai,bi) 的和儘可能大。任務是找到對的最大和。例如 arr[] = [1, 2, 3, 4] 和輸出為 4,對的最大和為 4。所有可能的是:
(1,2) 和 (3,4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4。
(1,4) 和 (2,3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3。
(1,3) 和 (2,4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3。
最大可能的和是− 4。
Python 中的陣列是一個容器,可以儲存單個型別的多個值,可以使用儲存在陣列中索引值引用該值。需要注意的是,python 沒有提供陣列的內建功能,而是提供列表的實現。陣列中的索引從 0 開始。例如,arr[0] 是第一個元素,arr[1] 是第二個元素,以此類推,直到 n-1,arr[n-1] 是最後一個元素。陣列將元素儲存在連續的記憶體分配中,而 arr[] 中的 arr 是儲存第一個元素的記憶體指標。訪問陣列的所有元素非常容易。
在本教程中,在第一種方法中,我們會對陣列進行排序,然後透過一個增量為 2 的 for 迴圈遍歷該陣列,接著將陣列元素新增到 res 中,最後返回 res。在第二種方法中,對陣列進行排序並宣告列表 res,然後透過一個增量為 2 的 for 迴圈遍歷該陣列,接著追加 a[i] 和 a[i+1],最後返回 res 陣列中最小值的和。在第三種方法中,對陣列進行排序並宣告變數 count,然後開始迴圈,同時將 count 一直增加到陣列的一半,接著將 a[n] 和 a[n+1] 的最小值新增到 sum,最後將 count 增加 1,並返回 sum。
示例
輸入 − arr[] = { 7, 8, 6, 9}
輸出 − 最大和為:9
說明 − 我們得到了包含 2n 個整數的陣列 [7, 8, 6, 9]。我們必須組成一對對的整數,如 (a1,b1)、(a2,b2)....(an,bn),使得陣列中所有元素的 min(ai,bi) 的和儘可能大。任務是找到成對的最大和。在這種方法中,我們會對陣列進行排序,並用 0 初始化該陣列,然後再透過一個增量為 2 的 FOR 迴圈遍歷該陣列,接著將 a[i] 新增到變數 res 中,最後返回 res。最大和為:9。
輸入 − arr[] = { 4,9,4,5,9,7}
輸出 − 最大子陣列和為:18
說明 − 我們得到了包含 2n 個整數的陣列 [ 4,9,4,5,9,7]。我們必須組成一對對的整數,如 (a1,b1)、(a2,b2)....(an,bn),使得陣列中所有元素的 min(ai,bi) 的和儘可能大。任務是找到成對的最大和。在這種方法中,我們會對陣列進行排序,然後初始化列表 res,接著透過 FOR 迴圈遍歷陣列,然後追加 arr[i] 和 arr[i+1],並返回 res 陣列中最小值的和。
以下程式中使用的方案如下:
第一種方法
輸入陣列元素
列印陣列。
然後,透過將陣列作為引數傳遞給 arrayPairSum(),呼叫該函式以列印最大和。
在 arrayPairSum() 內部。
用 0 初始化變數 res。
對陣列進行排序。
然後,從 0 開始到小於 len(a)-1,以增量 2 開始一個 FOR 迴圈。
然後將 a[i] 新增到 res 中。
然後返回 res。
第二種方法
輸入陣列元素。
列印陣列。
然後,透過將陣列作為引數傳遞給 arrayPairSum(),呼叫該函式以列印最大和。
在 arrayPairSum() 內部。
對陣列進行排序。
初始化列表 res。
從 0 開始到小於 len(a),以增量 2 開始一個 FOR 迴圈。
將 a[i] 和 a[i+1] 的對追加到 res 中。
然後,從 res 列表返回 min(r) 的和。
第三種方法
輸入陣列元素。
列印陣列。
然後,透過將陣列作為引數傳遞給 arrayPairSum(),呼叫該函式以列印最大和。
在 arrayPairSum() 內部。
對陣列進行排序。
然後,用 len(a) 初始化變數 l。
用 0 初始化變數 sum、n 和 count。
然後開始迴圈 WHILE count
然後新增 a[n] 和 a[n+1] 的最小值。
然後將 n 增加 2。
然後將 count 增加 1。
最後返回 sum。
示例 1
class Solution(object): def arrayPairSum(self, a): res = 0 a = sorted(a) for i in range(0,len(a)-1,2): res += a[i] return res ob1 = Solution() arr = [90,23,76,21,38] print("The array is:",arr) print("The maximum sum is:",ob1.arrayPairSum(arr))
輸出
如果我們執行上述程式碼,它會生成以下輸出 -
The array is: 90,23,76,21,38 The maximum sum is: 59
示例 2
class Solution(object): def arrayPairSum(self, a): a = sorted(a) res = [] for i in range(0, len(a), 2): res.append((a[i], a[i+1])) return sum([min(r) for r in res]) ob1 = Solution() arr = [17,18,16,19] print("The array is:",arr) print("The maximum sum is:",ob1.arrayPairSum(arr))
輸出
如果我們執行上述程式碼,它會生成以下輸出 -
The array is: 17,18,16,19 The maximum sum is: 34
示例 3
class Solution(object): def arrayPairSum(self, a): a = sorted(a) l = len(a) sum = 0 n = 0 count = 0 while count < l/2: sum += min(a[n], a[n + 1]) n += 2 count += 1 return sum ob1 = Solution() arr = [41,93,43,56,79,87] print("The array is:",arr) print("The maximum sum is:",ob1.arrayPairSum(arr))
輸出
如果我們執行上述程式碼,它會生成以下輸出 -
The array is: 41 93 43 56 79 87 The maximum sum is: 184
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP