具有最大和的对数的Python程序
给定一个数组 arr[],计算对 arr[i], arr[j] 的数量,使得 arr[i] + arr[j] 最大且 i < j。
Example :
Input : arr[] = {1, 1, 1, 2, 2, 2}
Output : 3
Explanation: The maximum possible pair
sum where i
Method 1 (Naive) Traverse a loop i from 0 to n, i.e length of the array and another loop j from i+1 to n to find all possible pairs with i
Python3
# Python program to count pairs with
# maximum sum
def _sum( a, n):
# traverse through all the pairs
maxSum = -9999999
for i in range(n):
for j in range(n):
maxSum = max(maxSum, a[i] + a[j])
# traverse through all pairs and
# keep a count of the number
# of maximum pairs
c = 0
for i in range(n):
for j in range(i+1, n):
if a[i] + a[j] == maxSum:
c+=1
return c
# driver code
array = [ 1, 1, 1, 2, 2, 2 ]
n = len(array)
print(_sum(array, n))
# This code is contributed by "Abhishek Sharma 44"
Output : 3Time complexity:O(n^2)Method 2 (Efficient) If we take a closer look, we can notice following facts. Maximum element is always part of solutionIf maximum element appears more than once, then result is maxCount * (maxCount - 1)/2. We basically need to choose 2 elements from maxCount (maxCountC2).If maximum element appears once, then result is equal to count of second maximum element. We can form a pair with every second max and maxPython3# Python 3 program to count# pairs with maximum sum.import sys # Function to find the number# of maximum pair sumsdef sum(a, n): # Find maximum and second maximum elements. # Also find their counts. maxVal = a[0]; maxCount = 1 secondMax = sys.maxsize for i in range(1, n) : if (a[i] == maxVal) : maxCount += 1 elif (a[i] > maxVal) : secondMax = maxVal secondMaxCount = maxCount maxVal = a[i] maxCount = 1 elif (a[i] == secondMax) : secondMax = a[i] secondMaxCount += 1 elif (a[i] > secondMax) : secondMax = a[i] secondMaxCount = 1 # If maximum element appears more than once. if (maxCount > 1): return maxCount * (maxCount - 1) / 2 # If maximum element appears only once. return secondMaxCount # Driver Codearray = [1, 1, 1, 2, 2, 2, 3] n = len(array)print(sum(array, n)) # This code is contributed by Smitha Dinesh SemwalOutput : 3Time complexity:O(n) Please refer complete article on Number of pairs with maximum sum for more details!