zoukankan      html  css  js  c++  java
  • LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)

     
    Problem :不使用乘法,除法,求模计算两个数的除法~
     
    除法运算:被除数中包含有多少个除数的计算
     
    由于是int类型的除法,因此结果可能超过int的最大值,当超过int的最大值时输出int的最大值
     
    另写除法函数,计算出除法的商。
    首先判断出除法运算后的结果是正数还是负数。
    之后需要将被除数和除数都变为正数,进行进一步计算
    当被除数小于除数时,返回0
    否则,进入循环体,判断被除数包含多少个除数(这里的个数是2的整数倍)
     
    返回结果需要查看是正数还是负数,记得加上正负号
     
    参考代码 :
     
    package leetcode_50;
    
    
    /***
     * 
     * @author pengfei_zheng
     * 不使用乘法、除法、求模实现除法运算
     */
    public class Solution29 {
        public int divide(int dividend, int divisor) {
            long result = divideLong(dividend, divisor);
            return result > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)result;
        }
    
        // It's easy to handle edge cases when
        // operate with long numbers rather than int
        public long divideLong(long dividend, long divisor) {
            
            // Remember the sign
            boolean negative = dividend < 0 != divisor < 0;
            
            // Make dividend and divisor unsign
            if (dividend < 0) dividend = -dividend;
            if (divisor < 0) divisor = -divisor;
            
            // Return if nothing to divide
            if (dividend < divisor) return 0;
            
            // Sum divisor 2, 4, 8, 16, 32 .... times
            long sum = divisor;
            long divide = 1;
            while ((sum+sum) <= dividend) {
                sum += sum;
                divide += divide;
            }
            
            // Make a recursive call for (devided-sum) and add it to the result
            return negative ? -(divide + divideLong((dividend-sum), divisor)) :
                (divide + divideLong((dividend-sum), divisor));
        }
    }
  • 相关阅读:
    弹出的iframe 表单无法获取焦点
    记录IE的两则BUG
    manifest 在移动端的应用实验
    [hover 状态图片变小] 淘宝的一个小用户体验
    使用 JSONP 的几点注意
    Apple在线商店iphone5, ipad mini到货提醒 邮件
    关于弹窗中的事件多次执行
    zen coding 插件使用实践
    hadoop系列整理Spark
    hadoop系列整理HBase
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6531700.html
Copyright © 2011-2022 走看看