Giả sử chúng ta có một số x, và x là một số không âm. Chúng ta phải tìm căn bậc hai của x mà không cần sử dụng bất kỳ hàm thư viện nào. Vì vậy, chúng ta phải tạo một hàm riêng để đánh giá sqrt (x). Trong hàm này, chữ số thập phân của đầu ra sẽ bị cắt bớt.
Giả sử giá trị của x là 4, thì kết quả sẽ là 2 nếu x là 8, thì kết quả cũng sẽ là 2, vì sqrt (8) là 2,82842. Nhưng chúng tôi sẽ chỉ lấy phần nguyên.
Để giải quyết vấn đề này, hãy làm theo các bước sau -
- khởi tạo l =1 và h =x + 1, answer =0
- while h> l, do
- mid =(h + l) / 2
- nếu mid * mid <=x, thì l:=mid + 1, answer =mid
- nếu không thì h =mid
- trả lời câu trả lời
Hãy cho chúng tôi xem việc triển khai để hiểu rõ hơn
Ví dụ (Python)
class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ low = 1 high = x+1 ans = 0 while high>low: mid = (high+low)//2 print(low,mid,high) if mid*mid<=x: low = mid+1 ans = mid else: high = mid return ans ob1 = Solution() print(ob1.mySqrt(4)) print(ob1.mySqrt(16)) print(ob1.mySqrt(7)) print(ob1.mySqrt(15))
Đầu vào
print(ob1.mySqrt(4)) print(ob1.mySqrt(16)) print(ob1.mySqrt(7)) print(ob1.mySqrt(15))
Đầu ra
2 4 2 3