숫자 x가 있고 x가 음수가 아닌 숫자라고 가정합니다. 라이브러리 함수를 사용하지 않고 x의 제곱근을 찾아야 합니다. 그래서 우리는 sqrt(x)를 평가하기 위해 우리 자신의 함수를 만들어야 합니다. 이 함수에서는 출력의 10진수가 잘립니다.
x의 값이 4라고 가정하고 x가 8이면 결과도 2가 되고 sqrt(8)이 2.82842이므로 결과도 2가 됩니다. 하지만 정수 부분만 사용합니다.
이 문제를 해결하려면 다음 단계를 따르십시오 -
- l =1 및 h =x + 1, 답변 =0 초기화
- 동안 h> l, do
- 중간 =(h + l)/2
- mid*mid <=x이면 l :=mid + 1, 답 =mid
- 그렇지 않으면 h =중간
- 반환 응답
더 나은 이해를 위해 구현을 살펴보겠습니다.
예제(파이썬)
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))
입력
print(ob1.mySqrt(4)) print(ob1.mySqrt(16)) print(ob1.mySqrt(7)) print(ob1.mySqrt(15))
출력
2 4 2 3