Giả sử chúng ta có một số mảng và ba số nguyên khác nhau a, b và c. Chúng ta phải tìm ra số lượng cặp sinh ba tốt. Một bộ ba (nums [i], nums [j], nums [k]) được cho là một bộ ba tốt nếu các điều kiện sau là đúng -
-
0 <=i
-
| nums [i] - nums [j] | <=a
-
| nums [j] - nums [k] | <=b
-
| nums [i] - nums [k] | <=c
Chúng ta phải đếm số lượng sinh ba tốt.
Vì vậy, nếu đầu vào giống như nums =[5,2,3,3,12,9], a =7, b =2, c =3, thì đầu ra sẽ là 4 vì bộ ba tốt là [(5, 2,3), (5,2,3), (5,3,3), (2,3,3)]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
res:=0
-
đối với tôi trong phạm vi từ 0 đến kích thước của nums - 1, thực hiện
-
đối với j trong phạm vi i + 1 đến kích thước của nums - 1, thực hiện
-
đối với k trong phạm vi j + 1 đến kích thước của nums - 1, thực hiện
-
nếu | nums [i] - nums [j] | <=a và | nums [j] - nums [k] | <=b và | nums [i] - nums [k] | <=c, sau đó
-
res:=res + 1
-
-
-
-
-
trả lại res
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums, a, b, c): res = 0 for i in range(len(nums)): for j in range(i+1, len(nums)): for k in range(j+1, len(nums)): if abs(nums[i] - nums[j]) <= a and abs(nums[j] - nums[k]) <= b and abs(nums[i] - nums[k]) <= c: res += 1 return res nums= [5,2,3,3,12,9] a = 7 b = 2 c = 3 print(solve(nums, a, b, c))
Đầu vào
[5,2,3,3,12,9], 7, 2 3
Đầu ra
4