zoukankan      html  css  js  c++  java
  • Divide Two Integers

    思路:不能单步减法,时间会超时。当第一次减完后被减数仍大减数,这时减数可采用2的指数增加,直到大于被减数后,被减数缩小,再次重新这个过程。

    注意调试时,出现的错误:

    int dividend = -2147483648;

    long b=-dividend;(其实b仍等于 -2147483648,因为右边-dividend其实已经运算过后,越界后的值赋给左边)

    还有循环内的b,count 仍要为long型,因为可能相加过后越界。

     1 class Solution {
     2 public:
     3     int divide(int dividend, int divisor) {
     4         int MAX_INT=2147483647;
     5         if(divisor==0||(dividend==-(MAX_INT+1)&&divisor==-1)) return MAX_INT;
     6         if(dividend==0) return 0;
     7         int flag=1,count=1,a;
     8         long long dend=dividend;
     9         long long sor=divisor;
    10         long long b;
    11         int quotient=0;
    12         if(dividend<0){ flag=-flag; dend=-dend;}
    13         if(divisor<0){ flag=-flag; sor= -sor;}
    14         if(dend<sor) return 0;
    15         while(dend>=sor)
    16         {
    17             count=1;
    18             b=sor;
    19             while(b+b<=dend)
    20             {
    21                 b+=b;
    22                 count+=count;
    23             }
    24             dend-=b;
    25             quotient+=count;
    26         }
    27         if(flag<0) quotient=-quotient;
    28         return quotient;
    29     }
    30 };
  • 相关阅读:
    Pycharm 2016 注册码
    在mac上搭建python环境
    Carthage 的使用
    生成唯一的随机字符串
    utf-8 转码--网址转码
    让自己的项目支持 Carthage
    系统自带的语音合成
    个性化 UIAlertController
    cocoaPods 创建自己的依赖库
    appleDoc 使用
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5265547.html
Copyright © 2011-2022 走看看