LeetCode 0029 兩數相除

2021-09-29 10:16:59 字數 1199 閱讀 9606

給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法、除法和mod運算子。

返回被除數dividend除以除數divisor得到的商。

示例 1:

輸入: dividend = 10, divisor = 3

輸出: 3

示例 2:

輸入: dividend = 7, divisor = -3

輸出: -2

說明:

無。參考:leetcode 題解

使用位移法:左移1相當於乘以2,右移1相當於除以2。

解題思路:

若計算100 / 3,且100 = 3 * 33 + 1,其中33 = 32 + 1 = 2 ^ 5 + 2 ^ 0。我們可以用100不斷減去3的倍數,直到值小於3為止。

實質:當dividenddivisor都為正數時,用dividend不斷減去divisor的倍數,直到dividend < divisor為止。否則,若當dividenddivisor都為負數時,用dividend不斷加上divisor的倍數,直到dividend > divisor為止。

class

solution

dividend -= tmp;

// dividend加上當前不小於dividend的divisor的最大倍數

result += tmp_result;

// divisor的總倍數,(-2)^5 + (-2)^0 = -33}if

(!positive)

return result;

}}

時間複雜度:o()

o()o(

);空間複雜度:o(1

)o(1)

o(1)

學渣帶你刷Leetcode0029兩數相除

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncate 8.345 8 以及 truncate ...

leetcode騰訊精選練習50(1) 兩數相加

這是一道來自leetcode的演算法題目。給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸...

Python實現leetcode 2 兩數相加

原題位址 python實現單向無序鍊錶 singly linked list 可參考鏈結 definition for singly linked list.class listnode def init self,x self.val x self.next none 將單向無序鍊錶轉為字串形式。...