• Divide Two Integers


    https://leetcode.com/problems/divide-two-integers/

    需要注意的,int类型的数据,正数最大和负数最小可以表示到:

    2147483647
    -2147483648

    正数最大的二进制码为:011111111......1111,负数最小的二进制码为:10000000000....00
    均为32位的二进制表示。
    并且正数+1后得到的数是负数最小的数,因为发生了溢出,这一定要注意。
    同时负数最小数-2147483648取反,同样得到的二进制码相同,所以还是它本身。
    这几个点一定注意。

    同时还要注意,abs()取绝对值函数,为了防止发生溢出,一定要定义了新的long long之后再进行使用。
     1 class Solution {
     2 public:
     3     int getRes(long long div,long long sor)
     4     {
     5         if(div==0)
     6             return 0;
     7         if(div<sor)
     8             return 0;
     9         int res=0;
    10         long long times=1;
    11         long long remain=div;
    12         long long var=sor;
    13         while(remain-var>=0)
    14         {
    15             remain-=var;
    16             res=res+times;
    17             var*=2;
    18             times*=2;
    19         }
    20         if(remain>0)
    21             res+=getRes(remain,sor);
    22         return res;
    23     }
    24     int divide(int dividend, int divisor) {
    25         int MAX_INT=2147483647;
    26         long long a=dividend;
    27         long long b=divisor;
    28         long long div=abs(a);  //先用两个long long类型的数据来存放dividend和divisor,否则会造成abs(-2147483648)溢出
    29         long long sor=abs(b);
    30         
    31         int res=getRes(div,sor);
    32 
    33         
    34         if((dividend>0&&divisor>0)||(dividend<0&&divisor<0))
    35         {
    36             if(res<0)
    37                 return MAX_INT;
    38             else
    39                 return res;
    40         }    
    41         else
    42         {
    43             return 0-res;
    44         }
    45             
    46     }
    47 };
  • 相关阅读:
    汉字转拼音
    多数组求笛卡尔积
    curl post参数,接口接收不到数据问题
    判断IMEI或MEID是否合法
    javascript 可控速度的上下拉菜单
    去掉android点击事件产生的半透明蓝色背景
    go.js是什么
    jQuery效果——动画
    jQuery选择器
    vue全局组件局部组件的使用
  • 原文地址:https://www.cnblogs.com/aguai1992/p/4657289.html
Copyright © 2020-2023  润新知