Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tổng hai số nhỏ hơn K (Two Sum Less Than K) trong Python

Cho mảng A các số nguyên và số nguyên K. Cần tìm giá trị S lớn nhất sao cho tồn tại i < j với A[i] + A[j] = S và S < K. Nếu không tồn tại cặp nào, trả về -1. Ví dụ: A = [34,23,1,24,75,33,54,8], K = 60 cho kết quả 58 (34+24=58 < 60).

Để giải quyết:

  • res = -1
  • Nếu A chỉ có 1 phần tử, trả về -1
  • Với i từ 0 đến độ dài A:
    • Với j từ i+1 đến độ dài A:
      • temp = A[i] + A[j]
      • Nếu temp < K: res = max(res, temp)
  • Trả về res

Ví dụ (Python)

class Solution(object):
    def twoSumLessThanK(self, A, K):
        ans = -1
        if len(A) == 1:
            return -1
        for i in range(len(A)):
            for j in range(i + 1, len(A)):
                temp = A[i] + A[j]
                if temp < K:
                    ans = max(ans, temp)
        return ans

ob1 = Solution()
print(ob1.twoSumLessThanK([34, 23, 1, 24, 75, 33, 54, 8], 60))

Đầu vào

[34, 23, 1, 24, 75, 33, 54, 8] 60

Kết quả

58