Divide Two Integers leetcode java

题目

Divide two integers without using multiplication, division and mod operator.

 

题解

这道题我自己没想出来。。。乘除取模都不让用。。那只有加减了。。。我参考的http://blog.csdn.net/perfect8886/article/details/23040143

 

代码如下:

 

 1       public  int divide( int dividend,  int divisor) {  
 2          if (dividend == 0 || divisor == 0) {  
 3              return 0;  
 4         }  
 5          boolean isNeg = (dividend > 0 && divisor < 0)  
 6                 || (dividend < 0 && divisor > 0);  
 7          long a = Math.abs(( long) dividend);  
 8          long b = Math.abs(( long) divisor);  
 9          if (b > a) {  
10              return 0;  
11         }  
12   
13          long sum = 0;  
14          long pow = 0;  
15          int result = 0;  
16          while (a >= b) {  
17             pow = 1;  
18             sum = b;  
19              while (sum + sum <= a) {  
20                 sum += sum;  
21                 pow += pow;  
22             }  
23             a -= sum;  
24             result += pow;  
25         }  
26          return isNeg ? -result : result;  
27     } 

Reference:

 http://blog.csdn.net/perfect8886/article/details/23040143

你可能感兴趣的:(LeetCode)