問題の説明:
int型のsqrt(int型x)関数を実現します。
計算し、xが負でない整数であり、xの平方根を返します。
戻り型が整数であるため、結果の整数部は、小数部を切り捨て保持します。
例1:
入力:4
出力:2
例2:
入力:8
出力:2
説明:
平方根は、2.82842 ... 8
戻り型が整数であるため、小数部を切り捨てています。
アイデアは答えるために:
考えることができる方法は、次のとおりです。ビルトイン関数法、暴力的な解決法、および二分法
質問の意味の後:
この質問は力を見るためだけでなく、ニュートン反復法を使用して解決するために、そしてその後に補足学ぶボタンをコメント、アイデアの様々なを見つけるでしょう。
(のみ機能付)個人的な解答のJavaバージョン:
回答1:
public static int mySqrt(int x) {
int num=(int)Math.sqrt(x);
return num;
}
回答2:
class Solution {
public int mySqrt(int x) {
int i;
for(i=0;i<=x;i++){
if(i*i>x||i*i<0){//防止溢出,超过整数的最大值
break;
}
}
return i-1;
}
}
回答3
public static int mySqrt(int x) {
int max=x,min=0,mid=x;
while(x==0||x==1){
return x;
}
while(max>=min){
if(mid<=x/mid && (mid+1)>x/(mid+1)){
return mid;
}
mid=(max+min)/2;
if(mid>x/mid){
max=mid;
}else if(mid<=x/mid){
min=mid;
}
}
return 0;
}
答えは、あなたがより良いアイデアを持っている場合、コメントエリア助言を歓迎一緒に学習の交換を容易にし、個人的な欠点を有することができます。
ジュニアパートナーかもしれ右上チャンに報いると同様か、コメントを歓迎!
コイン収集ポイントの三重結合利息ハハ、より安定した週と同様に