Giả sử chúng ta có một mảng gồm 2n số nguyên, chúng ta phải nhóm các số nguyên này thành n cặp số nguyên, như (a1, b1), (a2, b2), ..., (an, bn) tạo thành tổng nhỏ nhất (ai, bi) với mọi i trong phạm vi từ 1 đến n càng lớn càng tốt. Vì vậy, nếu đầu vào là [1, 4, 3, 2], thì đầu ra sẽ là 4. Vậy n là 2. Và tổng tối đa của các cặp là 4. Đây là min (1, 2) + min (3, 4) =4
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- đặt n là kích thước của mảng
- sắp xếp mảng
- câu trả lời:=0
- đối với tôi trong phạm vi từ 0 đến n, nhảy bằng 2
- answer:=answer + array [i]
- trả lời câu trả lời
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
class Solution(object): def arrayPairSum(self, a): """ :type nums: List[int] :rtype: int """ n = len(a) a.sort() ans = 0 for i in range(0,n,2): ans += a[i] return ans ob1 = Solution() print(ob1.arrayPairSum([1,4,3,2]))
Đầu vào
[1,4,3,2]
Đầu ra
4