2025年5月30日 星期五

29. Divide Two Integers

 29. Divide Two Integers

難度: Medium
類型: Math, Bit Manipulation
CPP程式下載: 29.cpp

前情題要:
兩個整數的除法, 但不能用到乘法與餘數(Mod)的運算。












思考方式:
如果知道方法的話, 這一題很簡單, 只要小心處理正負與極值就好。
1. 先判斷除數和被除數的正負, 之後就知道商的正負號。後面就都用正整數做除法。
2. 把十進位的除法改為二進位的除法就好。先把除數一直乘二直到最大但不大過被除數。然後兩個數字相減, 得到餘數。餘數再和除數退一位(bit)再比較, 大於就相減,然後商多1。最後的商也是二進位。就轉成10進位就可以了。
3. 處理商的極值若超過2^31, 就改為2^31 (正負都是)。

複雜度思考:

Time Complexity: O( 2*31 ) (最多)

Space Complexity: O( x )

結果:

Runtime: 0 ms, Beats: 100%

Memory: 8.48 MB, Beats: 96.80%