Computer >> Máy Tính >  >> Lập trình >> Python

Phân vùng mảng I bằng Python

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