zoukankan      html  css  js  c++  java
  • [LeetCode] 29. Divide Two Integers(不使用乘除取模,求两数相除) ☆☆☆

    转载:https://blog.csdn.net/Lynn_Baby/article/details/80624180 

    Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

    Return the quotient after dividing dividend by divisor.

    The integer division should truncate toward zero.

    Example 1:

    Input: dividend = 10, divisor = 3
    Output: 3
    Example 2:

    Input: dividend = 7, divisor = -3
    Output: -2

    乘除取模都不让用。。那只有加减

    思路解析:

    判空,返回0
    使用long类型的变量存储division和divisor的绝对值
    如果除数小于被除数,返回0
    使用加法完成除法,注意保存加了多少倍,使用嵌套循环,外层控制division大于divisor,里层控制倍数增加一倍是否比division要小
    最后返回值的时候不要忘记注意正负号

    public int divide(int dividend, int divisor) {
            if (dividend == 0 || divisor == 0)
                return 0;
            boolean flag = (dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0);
            long a = Math.abs((long) dividend);// 注意要转换成long型,防止溢出
            long b = Math.abs((long) divisor);
            if (a < b)
                return 0;
            int result = 0;
            while (a >= b) {
                long tempSum = b;
                long divSum = 1;
                while (tempSum + tempSum <= a) {
                    tempSum += tempSum;
                    divSum += divSum;
                }
                a -= tempSum;
                result += divSum;
            }
            return flag == true ? -result : result;
        }
  • 相关阅读:
    如何学习区块链
    用Python从零开始创建区块链
    区块链入门
    什么是区块链
    localStorage使用总结
    整理vue学习笔记
    SCSS 教程
    vue — 创建vue项目
    软件开发的常见文档
    史上最全的CSS hack方式一览(转)
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/10302904.html
Copyright © 2011-2022 走看看