Leetcode Weekeek16

来源:互联网 发布:js加载页面时自动执行 编辑:程序博客网 时间:2024/06/15 11:47
Divide Two Integers
    Divide two integers without using multiplication, division and mod operator.


    If it is overflow, return MAX_INT.


    1)考虑边界问题。
    2)考虑INT_MIN与INT_MAX绝对值之间差1。

    3)考虑符号。

class Solution {public:    int divide(int dividend, int divisor) {       if(dividend==0||divisor==0)          {              return 0;          }        if(dividend==INT_MIN && divisor==-1) return INT_MAX;                  bool positive=true;          if(dividend>0 && divisor<0)          {              positive = false;          }          if(dividend<0 && divisor>0)          {              positive = false;          }                    int x=dividend;          int y=divisor;          int result = 0;                    if(divisor==INT_MIN)          {              return dividend==INT_MIN?1:0;          }else if(divisor<0)          {              y=-divisor;          }                    if(dividend==INT_MIN)          {              x=INT_MAX-y+1;              result+=1;          }else if(dividend<0)          {              x=-dividend;          }                    while(x>=y)          {              int sum = y;              int count=1;              while(sum <= x - sum)              {                  count += count;                  sum += sum;              };              x -= sum;              result+=count;          };          return (positive?1:-1)*result;      }  };





原创粉丝点击