29 leetcode - Divide Two Integers
来源:互联网 发布:ipad监控软件 编辑:程序博客网 时间:2024/05/01 22:49
根据公式num=a0 * 2^0 + a1 * 2^1 + a2 * 2^2 + … + an * 2^n
左移一位相当于乘以2
'''英文:Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.中文:不使用乘法,除法,取余,将两个整数相除'''class Solution(object): def divide(self, dividend, divisor): """ :type dividend: int :type divisor: int :rtype: int """ if divisor == 0 or (dividend == -2147483648 and divisor == -1): #除数为0,最大负数/-1越界 return 2147483647 flag = 1 if (divisor > 0 and dividend < 0) or (divisor < 0 and dividend > 0): flag = -1 #保证都为正数 dividend = abs(dividend) divisor = abs(divisor) if dividend < divisor: #除数大于被除数的情况 return 0 move = 0 #获取pow(divisor,n) <= dividend < pow(divisor,n+1)中的n while (divisor << (move + 1)) <= dividend: move += 1 ret = 0 while move >= 0 and dividend > 0: if dividend >= (divisor << move): ret += (1 << move) dividend -= (divisor << move) move -= 1 if flag == -1: ret = -ret return retif __name__ == "__main__": s = Solution() print s.divide(-2147483648,-1)
0 0
- leetcode 29: Divide Two Integers
- LeetCode(29)Divide Two Integers
- [leetcode 29] Divide Two Integers
- [leetcode] 29 Divide Two Integers
- leetcode 29 Divide Two Integers
- Leetcode 29 Divide Two Integers
- LeetCode 29 - Divide Two Integers
- leetcode 29 -- Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29: Divide Two Integers
- Leetcode#29 Divide Two Integers
- LeetCode(29)Divide Two Integers
- LeetCode-29 Divide Two Integers
- Leetcode#29||Divide Two Integers
- leetcode-29 Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29:Divide Two Integers
- LeetCode 29: Divide Two Integers
- 38. Count and Say
- 精通 CSS+DIV 网页样式与布局 10
- 第14周项目2-二叉树排序树中查找的路径
- 【C语言】leetcode 67. Add Binary
- 泛型应用
- 29 leetcode - Divide Two Integers
- git学习笔记
- Android利器之Service
- 域名和网络地址结构体---struct hostent
- 三台机器搭建Hadoop集群
- 浅析LDA-主题模型
- CSS基础
- 三种特征选择方法及Spark MLlib调用实例(Scala/Java/python)
- Sparse Matrix --- (1) Blocks