博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode29. Divide Two Integers(思路及python解法)
阅读量:2243 次
发布时间:2019-05-09

本文共 996 字,大约阅读时间需要 3 分钟。

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 = 3Output: 3

Example 2:

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

不用乘除取余的操作符号,完成一个除法操作。

以往判断符号直接两数相乘判断,这里用 is 方法。然后将两数取绝对值。

然后就是一个不断减除数的一个过程,为了加速,每次将除数左移一位(相当于×2),然后类似于tcp中快恢复算法,重复这个过程。

最后要判断是否在[−2^31,  2^31 − 1]范围内。

class Solution:    def divide(self, dividend: int, divisor: int) -> int:                sym= (dividend<0) is (divisor<0)        dividend, divisor = abs(dividend), abs(divisor)        res=0                while dividend>=divisor:            index=1            ndivisor=divisor            while dividend>=ndivisor:                dividend -= ndivisor                res+=index                index<<=1                ndivisor<<=1                if not sym:res=-res        return max(min(res,2147483647),-2147483648)

 

转载地址:http://vjrbb.baihongyu.com/

你可能感兴趣的文章
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
决策树的python实现
查看>>
了解 Sklearn 的数据集
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>
用 LSTM 来做一个分类小问题
查看>>
详解 LSTM
查看>>
按时间轴简述九大卷积神经网络
查看>>
详解循环神经网络(Recurrent Neural Network)
查看>>
为什么要用交叉验证
查看>>
用学习曲线 learning curve 来判别过拟合问题
查看>>
用验证曲线 validation curve 选择超参数
查看>>