Cho danh sách nums, kiểm tra có tồn tại hai số mà một số là gấp 3 lần số kia không.
Ví dụ: [2, 3, 10, 7, 9] → True (9 = 3×3).
Các bước giải quyết (hai con trỏ)
- Sắp xếp danh sách
i = 0, j = 1- Khi
j < len(n):- Nếu
3*n[i] == n[j]→True - Nếu
3*n[i] > n[j]→j += 1 - Ngược lại →
i += 1
- Nếu
- Trả về
False
Ví dụ mã Python
class Solution:
def solve(self, n):
i = 0
n.sort()
j = 1
while j < len(n):
if 3*n[i] == n[j]:
return True
if 3*n[i] > n[j]:
j += 1
else:
i += 1
return False
ob = Solution()
print(ob.solve([2, 3, 10, 7, 9]))
Đầu vào
[2, 3, 10, 7, 9]
Đầu ra
True