Giả sử chúng ta có một danh sách các số gọi là nums, chúng ta phải tìm tích lớn nhất của ba phần tử duy nhất.
Vì vậy, nếu đầu vào là nums = [6, 1, 2, 4, -3, -4], thì đầu ra sẽ là 72, vì ta có thể nhân (-3) * (-4) * 6 = 72.
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau:
sắp xếp danh sách nums
n := kích thước nums
maxScore := -inf
maxScore := max(maxScore, nums[0] * nums[1] * nums[n - 1])
maxScore := max(maxScore, nums[n - 3] * nums[n - 2] * nums[n - 1])
trả về maxScore
Ví dụ
Hãy xem triển khai sau để hiểu rõ hơn:
def solve(nums):
nums.sort()
n = len(nums)
maxScore = -10000
maxScore = max(maxScore, nums[0] * nums[1] * nums[n - 1])
maxScore = max(maxScore, nums[n - 3] * nums[n - 2] * nums[n - 1])
return maxScore
nums = [6, 1, 2, 4, -3, -4]
print(solve(nums))
Đầu vào
[6, 1, 2, 4, -3, -4]
Đầu ra
72