1. 程式人生 > >【leetcode】69. (Easy)Sqrt(x)

【leetcode】69. (Easy)Sqrt(x)

解題思路:
二分法,同時使用double來記錄數字
此外後面討論區有個答案還挺好的,使用mid>x/mid?來進行判斷,避免了數字型別轉換。


提交程式碼:

class Solution {
    public int mySqrt(int x) {
    	if(x==0)	return 0;
    	
        double num1=1,num2=x,mid;
    	
        while(num1<num2-1) {
        	mid=(num1+num2)/2;
        	if(mid*mid==x)		return (
int)mid; else if(mid*mid<x) num1=mid; else num2=mid; } if(Math.ceil(num1)*Math.ceil(num1)<=x) return (int)Math.ceil(num1); else return (int)num1; } }

執行結果:

在這裡插入圖片描述