Sqrt(x)

1035 단어 자바설계 문제
Implement int sqrt(int x).
Compute and return the square root of x.
하나의 디자인 문 제 는 sqrt 방법,즉 제곱 근 을 평평 하 게 하 는 것 이다.우 리 는 이분법 으로 할 수 있다.left 를 1 로 설정 하고,  right 는 x 이 고 x/mid 와 mid 로 비교 합 니 다.(x/mid 와 mid 를 비교 하지 않 고 x 와 mid*mid 를 비교 하지 않 는 이 유 는 mid*mid 가 넘 칠 수 있 기 때 문 입 니 다.x/mid 로 넘 치 는 것 을 방지 할 수 있 습 니 다)x/mid 가 mid 와 같 으 면 mid 로 돌아 갑 니 다.x/mid 가 mid 보다 작 으 면 right=mid-1;x/mid 가 mid 보다 크 면 left=mid+1;left>right 프로그램 이 종 료 될 때 까지 이것 은 left-1 입 니 다.마침 우리 가 찾 는 답 입 니 다.돌아 가면 됩 니 다.코드 는 다음 과 같 습 니 다:

public class Solution {
    public int mySqrt(int x) {
        if(x <= 1) return x;
        int l = 1;
        int r = x;
        while(l <= r) {
            int mid = l + (r - l) / 2;
            if(x / mid ==  mid) return mid;
            if(x / mid > mid) {
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
        return l - 1;
    }
}

좋은 웹페이지 즐겨찾기