Leetcode - 29. 兩數相除
阿新 • • 發佈:2021-08-30
給定兩個整數,被除數
dividend
和除數divisor
。將兩數相除,要求不使用乘法、除法和mod
運算子。
返回被除數dividend
除以除數divisor
得到的商。
整數除法的結果應當截去(truncate)其小數部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
示例1:
輸入: dividend = 10, divisor = 3
輸出: 3
解釋: 10/3 = truncate(3.33333..) = truncate(3) = 3
示例2:
輸入: dividend = 7, divisor = -3 輸出: -2 解釋: 7/-3 = truncate(-2.33333..) = -2
提示:
- 被除數和除數均為 32 位有符號整數。
- 除數不為0。
- 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231− 1]。本題中,如果除法結果溢位,則返回 231− 1。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/divide-two-integers
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解1 2021/8/30 O(?)
def divide(dividend: int, divisor: int) -> int: # 正常解就是,1)取出符號;2)用減法 ret=int(dividend/divisor) return ret if ret in range(-(1<<31),(1<<31)) else (1<<31)-1 if __name__ == '__main__': print(divide(10,3)) print(divide(7,-3)) print(divide(-2147483648,-1)) print(divide(-2147483648,1)) print(divide(-2147483649,1))