码迷,mamicode.com
首页 > 其他好文 > 详细

Divide Two Integers

时间:2014-09-04 20:46:30      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   div   sp   log   on   c   

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

思路:取被除数和除数的绝对值求解即可。不过,需要考虑特殊情况:INT_MIN取绝对值仍然是INT_MIN。

 1 class Solution {
 2 public:
 3     int divide( int dividend, int divisor ) {
 4         if( divisor == 0 ) { return -1; }
 5         if( dividend == 0 ) { return 0; }
 6         if( divisor == INT_MIN ) { return dividend == INT_MIN; }
 7         int ret = 0, sign = dividend > 0;
 8         if( divisor < 0 ) { sign = !sign; }
 9         if( dividend == INT_MIN ) {
10             dividend += abs( divisor );
11             ret = 1;
12         }
13         dividend = abs( dividend );
14         divisor = abs( divisor );
15         int num = 0;
16         while( dividend - (divisor<<num) >= (divisor<<num) ) { ++num; }
17         while( num >= 0 ) {
18             if( dividend >= (divisor<<num) ) {
19                 dividend -= (divisor<<num);
20                 ret += (1<<num);
21             }
22             --num;
23         }
24         return sign ? ret : -ret;
25     }
26 };

 

Divide Two Integers

标签:style   blog   color   io   div   sp   log   on   c   

原文地址:http://www.cnblogs.com/moderate-fish/p/3956006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!