【每日一题】【直接循环&二分查找】2022年2月10日-NC32 求平方根

描述
实现函数 int sqrt(int x).
计算并返回 x 的平方根(向下取整)

 

方法1:直接循环

import java.util.*;


public class Solution {
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    public int sqrt (int x) {
        for (int i = 1; i <= x; i++) {
            if(i * i == x) {
                return i;
            }
            if(i * i > x) {
                return i - 1;
            }
        }
        return 0;
    }
}

方法2:二分查找

import java.util.*;


public class Solution {
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    public int sqrt (int x) {
        if (x == 0) {
            return 0;
        }
        int low = 1, high = x;
        for(int i = 1; i <= x; i++) {
            int mid = low + ((high - low) >> 1);
            if(mid > x / mid) {
                high = mid - 1;
            } else {
                if((mid + 1) > x / (mid + 1)) {
                    return mid;
                }
                low = mid + 1;
            }
        }
        return low;
    }
}

 

posted @ 2022-02-10 09:28  哥们要飞  阅读(25)  评论(0编辑  收藏  举报