每日LeetCode之兩整數相除

2021-08-20 15:24:45 字數 1115 閱讀 8070

解決方案一:採用二分法,能夠較快的解決不採用除法,乘法以及mod方法來計算兩個整數的除法的問題。

public int divide(int dividend, int divisor) 

//判斷結束後全部當做正數進行操作

//使用long解決數值溢位情況

long ldividend = math.abs((long)dividend);

long ldivisor = math.abs((long)divisor);

if(ldivisor==0) return integer.max_value;

if(ldividend==0 || ldividendinteger.max_value)

return (int)(ispositive? result : -result);

}public long divide(long ldividend, long ldivisor)

return result + divide(ldividend-sum, ldivisor);

}

方法二:採用位運算方式進行除法運算:

public int divide(int dividend, int divisor) 

if(divisor == 0)

if(dividend == integer.min_value)

}int flag = 1;

long div=dividend, dor=divisor;

if (div<0)

if (dor<0)

int re = 0;

while (div >= dor)

div -= temp ;

re += aa ;

} return re*flag;

}

這兩種方式都能夠較快的計算和通過測試,關鍵點的思路在於打破常規的思路,例如首先想到的就是迴圈相減,不過當兩個數之間的差值很大的是偶就會出現很嚴重的問題,超時,所以我們採用一種代替除法,但是非常類似的方法,如位移,這個向左則相當於乘以2,向右則相當於除以2。同樣的二分法是從數學邏輯的角度計算的,而且也比較快速。

每日leetcode 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。需要判斷是否超出int 同時需要注意注意注意python中的負數取餘和c等語言的不同 python中 13 10等於7,而非 3。def reverse self,x int int rev 0 minint pow 2,31 ...

leetcode 兩整數之和

不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2 輸出 3 示例 2 輸入 a 2,b 3 輸出 1 通過觀察異或運算的真值表,與加法的真值表特別地像。需要注意的是異或只看本位,加法可能需要進製。從而用到與運算 1 0 1 1 1 1 0 1 0 0 0 0 與運算可以很好...

leetcode每日一題 整數拆分

難度 中等 給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。返回你可以獲得的最大乘積。示例1 輸入 2輸出 1解釋 2 1 1,1 1 1。示例2 輸入 10輸出 36解釋 10 3 3 4,3 3 4 36。說明 你可以假設 n 不小於 2 且不大於 58。思路 看到題...