色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

JAVA算法編程題帶答案和注釋的

劉柏宏1年前9瀏覽0評論

Java算法編程題是程序員常見的挑戰(zhàn)之一。隨著軟件開發(fā)行業(yè)的變化,越來越多的公司將算法知識作為面試的重要考察點。下面我們來看一道經(jīng)典的Java算法編程題:

/**
 * 實現(xiàn) pow(x, n) ,即計算 x 的 n 次冪函數(shù)(即,xn)。
 * 示例 1:
 * 輸入: 2.00000, 10
 * 輸出: 1024.00000
 * 示例 2:
 * 輸入: 2.10000, 3
 * 輸出: 9.26100
 * 示例 3:
 * 輸入: 2.00000, -2
 * 輸出: 0.25000
 * 解釋: 2-2 = 1/22 = 1/4 = 0.25
 * 提示:
 * -100.0< x< 100.0
 * -231<= n<= 231-1
 * -104<= xn<= 104
 */
public class Solution {
public double myPow(double x, int n) {
if(n<0){
x=1/x;
n=-(n+1);//對n+1進(jìn)行處理,避免在n=Integer.MIN_VALUE時溢出
}
double ans=1;
double current=x;
for(int i=n;i>0;i/=2){
if(i%2==1){
ans*=current;
}
current*=current;
}
return ans;
}
}

這道題的思路是使用二分法不斷縮小規(guī)模,直到規(guī)模被縮小到0為止。

首先,如果n為負(fù)數(shù),將x轉(zhuǎn)化為1/x,將n轉(zhuǎn)化為-n+1。這是因為當(dāng)n=Integer.MIN_VALUE時,直接取相反數(shù)會導(dǎo)致溢出,所以需要進(jìn)行處理。

接著,使用循環(huán)來逐步縮小n的規(guī)模。每次循環(huán)將n除以2,如果n為奇數(shù),則將當(dāng)前的答案乘以current(此時current為x的冪),并更新current的值。

最后,當(dāng)n為0時,返回答案。