zoukankan      html  css  js  c++  java
  • 【leetcode】29. Divide Two Integers

    题目如下:

    解题思路:除法就是减法。但是遇到比较BT的用例 pow(2,31)/1,需要对方法进行改进。改进的方案是依次增大除数,每次对除数扩大两倍。

    代码如下:

    class Solution:
        # @param {integer} dividend
        # @param {integer} divisor
        # @return {integer}
        def divide(self, dividend, divisor):
            if divisor == 0:
                return 0
    
            flag = ''
            if dividend < 0 and divisor < 0:
                dividend = -dividend
                divisor = -divisor
            elif dividend < 0 and divisor > 0:
                flag = '-'
                dividend = -dividend
            elif dividend > 0 and divisor < 0:
                flag = '-'
                divisor = -divisor
    
            count = 0
            while dividend >= divisor:
                new_divisor = divisor
                times = 0
                while dividend >= new_divisor:
                    dividend -= new_divisor
                    if times == 0:
                        times = 1
                    else:
                        times += times
                    count += times
                    new_divisor += new_divisor
    
            if flag == '-':
                if count > 2147483648:
                    count = 2147483648
                count = -count
            else:
                if count > 2147483647:
                    count = 2147483647
            return count
  • 相关阅读:
    Object有哪些公用方法?(转)
    equals和==的区别(转)
    switch语句中case的标签
    (常见面试问题)九种基本数据类型的大小,以及他们的封装类
    English
    plot
    文件读写
    标准化
    独热编码
    一阶逻辑
  • 原文地址:https://www.cnblogs.com/seyjs/p/9541762.html
Copyright © 2011-2022 走看看