給定兩個整數,被除數dividend
和除數divisor
。將兩數相除,要求不使用乘法、除法和 mod 運算子。
返回被除數dividend
除以除數divisor
得到的商。
示例 1:
輸入:dividend = 10, divisor = 3示例 2:輸出:3
輸入:dividend = 7, divisor = -3說明:輸出:-2
需要判斷結果的符號
初始的時候,需要將被除數和除數都取絕對值,得到tmp_dividend
和tmp_divisor
主要思路就是用被除數減去除數,用變數res
儲存解,也就是減去了多少個除數
因此總結起來就是兩層while迴圈,內層迴圈用來試探不斷逼近tmp_dividend
,當用來試探的tmp
超過了tmp_dividend
時,退出內層迴圈,當前被除數重新賦值為一開始的tmp_divisor
long
long add(long
long a, long
long b)
return
sum;
}int divide(int dividend, int divisor)
}// 如果商小於0,返回res的相反數
if ((dividend ^ divisor) < 0)
res = res > int_min ? res : int_min;
return res < int_max ? res : int_max;
}
LeetCode29 兩數相除
給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出 2說...
leetcode 29 兩數相除
給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出 2說...
LeetCode 29 兩數相除
題目要求不能使用乘法 除法和除餘運算,但我們可以將除法轉移到對數域。frac e e 這樣就轉化為指數 對數和減法運算了。因為只能對正整數取對數,因此我們首先要將兩個數都取絕對值,最後再加上符號。同時,題目要求只能儲存 32 位有符號整數,因此,當資料大於上邊界時,需要進行特殊處理。class so...