Giả sử chúng ta có ba mảng được sắp xếp A, B và C (những mảng này có thể có kích thước khác nhau), chúng ta phải tính toán chênh lệch tuyệt đối nhỏ nhất giữa số lớn nhất và nhỏ nhất của bất kỳ bộ ba nào (A [i], B [j], C [k]) sao cho chúng nằm dưới các mảng A, B và C tương ứng,
Vì vậy, nếu đầu vào là A:[2, 5, 6, 9, 11], B:[7, 10, 16], C:[3, 4, 7, 7], thì đầu ra sẽ là 1 như bằng cách chọn A [i] =6 B [j] =7 và C [k] =7, chúng ta sẽ nhận được sự khác biệt nhỏ nhất là max (A [i], B [j], C [k]) - min (A [i], B [j], C [k])) =| 7-6 | =1
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- i:=kích thước của A - 1
- j:=kích thước của B - 1
- k:=kích thước của C - 1
- Minimum_dfference:=| tối đa A [i], B [j], C [k] - tối thiểu A [i], B [j], C [k] |
- trong khi tôi không giống -1 và j không giống -1 và k không giống -1, do
- current_diff:=| tối đa A [i], B [j], C [k] - tối thiểu A [i], B [j], C [k] |
- nếu current_diff
- Minimum_dfference:=current_diff
- Maximum_term:=tối đa A [i], B [j], C [k]
- nếu A [i] giống với Maximum_term, thì
- i:=i - 1
- ngược lại khi B [j] giống với Maximum_term thì
- j:=j - 1
- nếu không,
- k:=k - 1>
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(A, B, C): i = len(A) - 1 j = len(B) - 1 k = len(C) - 1 minimum_dfference = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])) while i != -1 and j != -1 and k != -1: current_diff = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])) if current_diff < minimum_dfference: minimum_dfference = current_diff maximum_term = max(A[i], B[j], C[k]) if A[i] == maximum_term: i -= 1 elif B[j] == maximum_term: j -= 1 else: k -= 1 return minimum_dfference A = [ 2, 5, 6, 9, 11 ] B = [ 7, 10, 16 ] C = [ 3, 4, 7, 7 ] print(solve(A, B, C))
Đầu vào
A = [ 2, 5, 6, 9, 11 ] B = [ 7, 10, 16 ] C = [ 3, 4, 7, 7 ]
Đầu ra
1