สมมติว่าเรามีจำนวนอาร์เรย์ และจำนวนเต็มที่แตกต่างกันสามตัว a, b และ c เราต้องหาจำนวนแฝดสามตัวที่ดี แฝดสาม (nums[i], nums[j], nums[k]) ถือเป็นแฝดที่ดี หากเงื่อนไขต่อไปนี้เป็นจริง -
-
0 <=i
-
|nums[i] - nums[j]| <=ก
-
|nums[j] - nums[k]| <=b
-
|nums[i] - nums[k]| <=ค
เราต้องนับจำนวนแฝดที่ดี
ดังนั้น หากอินพุตเป็น nums=[5,2,3,3,12,9], a =7, b =2, c =3 ผลลัพธ์จะเป็น 4 เพราะแฝดสามที่ดีคือ [(5, 2,3), (5,2,3), (5,3,3), (2,3,3)]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
res :=0
-
สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
-
สำหรับ j ในช่วง i+1 ถึงขนาดของ nums - 1 ทำ
-
สำหรับ k ในช่วง j+1 ถึงขนาดของ nums - 1 ทำ
-
ถ้า |nums[i] - nums[j]| <=และ |nums[j] - nums[k]| <=b และ |nums[i] - nums[k]| <=ค แล้ว
-
res :=res + 1
-
-
-
-
-
ผลตอบแทน
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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))
อินพุต
[5,2,3,3,12,9], 7, 2 3
ผลลัพธ์
4