LeetCode兩數相除
給定兩個整數,被除數 dividend
和除數 divisor
。將兩數相除,要求不使用乘法、除法和 mod 運算子。
返回被除數 dividend
除以除數 divisor
得到的商。
示例 1:
輸入: dividend = 10, divisor = 3 輸出: 3
示例 2:
輸入: dividend = 7, divisor = -3 輸出: -2
說明:
- 被除數和除數均為 32 位有符號整數。
- 除數不為 0。
- 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。本題中,如果除法結果溢位,則返回 231 − 1。
-
package divideTwoIntegers; public class DivideTwoIntegers { public static void main(String[] args) { DivideTwoIntegers divideTwoIntegers = new DivideTwoIntegers(); Solution solution = divideTwoIntegers.new Solution(); System.out.println(solution.divide(-1, 1)); } class Solution { public int divide(int dividend, int divisor) { //判斷除數是否為0,為0則結果是極大值 if(divisor==0) { return Integer.MAX_VALUE; } //判斷結果是否是負數 boolean isNegative = false; if((dividend>0&&divisor<0)||(dividend<0&&divisor>0)) { isNegative = true; } long dividendLong = Math.abs((long)dividend); long divisorLong =Math.abs((long)divisor); if(dividend==0||dividendLong<divisorLong) { return 0; } long result =dichotomyDividend(dividendLong,divisorLong); if(result>Integer.MAX_VALUE) { return isNegative?Integer.MIN_VALUE:Integer.MAX_VALUE; } return isNegative?(int)-result:(int)result; } private long dichotomyDividend(long dividendLong, long divisorLong) { // TODO Auto-generated method stub if(dividendLong<divisorLong) { return 0; } //首次取1值 long result=1; long tempDivisor = divisorLong; //進行二分減少計算 while(dividendLong>=(tempDivisor+tempDivisor)) { tempDivisor+=tempDivisor; result+=result; } return result+dichotomyDividend(dividendLong-tempDivisor, divisorLong); } } }
相關推薦
[leetcode]兩數相除(Divide Two Integers)
兩數相除(Divide Two Integers) 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: divid
LeetCode兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1:
[leetcode] 29. 兩數相除
ide problems urn tmp detail while 這不 math divisor 29. 兩數相除 感覺是目前遇到過的最‘難’過的題。。。 不讓你用乘除法,看樣子又是個涉及位運算的題。 上來打算暴力,只用減法,結果超時。 沒啥想法,遂google了一下,發
LeetCode 29兩數相除
解法 如果 += mod ide left 溢出 輸入 iso 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算符。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: di
LeetCode 29——兩數相除
urn https 處理 image 循環 繼續 移位操作 div labs 1. 題目 2. 解答 2.1. 方法一 題目要求不能使用乘法、除法和除余運算,但我們可以將除法轉移到對數域。 $$ \frac{a}{b} = e^{\frac{lna}{lnb}} = e^
LeetCode 29 - 兩數相除 - [位運算]
題目連結:https://leetcode-cn.com/problems/divide-two-integers/description/ 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 div
leetcode 29 兩數相除
問題描述 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1:
LeetCode第29題 Divide Two Integers(兩數相除)
class Solution { public: int divide(int dividend, int divisor) { if(!divisor || (dividend == INT_MIN && divisor == -1)
Leetcode(29)兩數相除
題目描述 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divisor = 3 輸出: 3 示例 2:
leetcode 29 ---- 二分查詢(中等) : 兩數相除(java)
1. 問題:給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divisor = 3
LeetCode-29. 兩數相除
題目地址:https://leetcode-cn.com/problems/divide-two-integers/ 思路:這題還是有點意思的,首先是隻能用int,然後不能用乘除mod。如果直接傻傻的用減法,那顯然超時。考慮用移位來操作,每次將除數逐漸翻倍至最接近被除數,然後將除數減去,
leetcode 29:兩數相除
通過使用位運算可以解決該問題 需要注意的是當dividend=INT_MIN和divisor=-1時 得到的商將會溢位 任何一個整數都可以表示成以2的冪為底的一組基的線性組合 每次將除數左移到大於被除數的上一位,使用被除數減去移位之後的數, 持續這個直到基為0 i
LeetCode 29. 兩數相除 Divide Two Integers(C語言)
題目描述: 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divisor =
[LeetCode] Divide Two Integers 兩數相除
Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. 這道題讓我們求兩數相除,而且規定我們不能用乘法,除法和取餘操作,那麼我們還
Leetcode做題日記:29. 兩數相除(PYTHON)
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divisor = 3 輸出: 3 示例 2:
LeetCode演算法題29:兩數相除解析
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divisor = 3 輸出: 3 示例
LeetCode 29 — Divide Two Integers(兩數相除)
Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the qu
LeetCode 29. 兩數相除
題目描述 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。
LeetCode演算法題--------兩數相除
問題: 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1: 輸入: dividend = 10, divis
leetcode 29. 兩數相除(Divide Two Integers)
code cpp lis 示例 vid int else divide tle 目錄 題目描述: 示例 1: 示例 2: 解法: 題目描述: