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)
- Với j từ i+1 đến độ dài A:
- 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