两个整数相除

  1. class Solution {  
  2. public:  
  3.     /** 
  4.      * @param dividend the dividend 
  5.      * @param divisor the divisor 
  6.      * @return the result 
  7.      */  
  8.     int divide(int dividend, int divisor) {  
  9.         // Write your code here  
  10.         bool resultGreatThanZero = true;  
  11.         if(dividend>0&&divisor<0||dividend<0&&divisor>0)  
  12.             resultGreatThanZero = false;  
  13.         long long ret = 0;  
  14.         long long d1 = abs((long long)dividend);  
  15.         long long d2 = abs((long long)divisor);  
  16.         while(d1>=d2)  
  17.         {  
  18.             long long temp = d2;  
  19.             long long cnt = 1;  
  20.             while(d1>=temp)  
  21.             {  
  22.                 d1-=temp;  
  23.                 ret+=cnt;  
  24.                 cnt = cnt<<1;  
  25.                 temp = temp<<1;  
  26.             }  
  27.         }  
  28.         if(!resultGreatThanZero)  
  29.             ret*=-1;  
  30.         if(ret<(long long)INT_MIN||ret>(long long)INT_MAX)  
  31.             return INT_MAX;  
  32.         return ret;  
  33.     }  
  34. };  
posted @ 2017-08-28 19:23  MAC10  阅读(161)  评论(0编辑  收藏  举报