029 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。
返回被除數 dividend 除以除數 divisor 得到的商。
說明:示例 1:
輸入: dividend = 10, divisor = 3
輸出: 3
示例 2:
輸入: dividend = 7, divisor = -3
輸出: -2
被除數和除數均為 32 位有符號整數。
除數不為 0。
思路:移位法
如果不能用除,大家可以用減,每減乙個divisor,就++,這種太複雜了
我們可以考慮用2^n來比較,從31開始,依次減小,如果dividend大於2的n次方*advisor,然後就減去然後繼續比較,直到比較完
核心算式:
for (int i = 31; i>=0 ; i--)
boolean flag;
flag=(dividend^divisor)<0;
long t=math.abs((long)dividend);
long d=math.abs((long)divisor);
int result=0;
for (int i = 31; i>=0 ; i--)
}return flag? -result:result;
}
LeetCode029 兩數相除
給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出 2說...
LeetCode 029 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncate 8.345 8 以及 truncate ...
LeetCode 兩數相除
題目 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出...