[LeetCode]Divide Two Integers
来源:互联网 发布:windows重置此电脑失败 编辑:程序博客网 时间:2024/05/29 04:18
题目
Number: 29
Difficulty: Medium
Tags: Math, Binary Search
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return
MAX_INT
.
题解
不许用除法、乘法、模运算,求解两个数相除。
除法可以用减法求解,但是时间很慢。
while(dividend >= dividsor){ dividend = dividend - dividsor; result++;}
这时可以考虑用二分搜索,每次把除数扩大2倍,直到比被除数大,两数相减,一下子减少一半以上。
代码
int divide(int dividend, int divisor) { if(divisor == 1) return dividend; if(dividend == INT_MIN && abs(divisor) == 1) return INT_MAX; int result = 0; int sign = (dividend > 0 ^ divisor > 0) ? -1 : 1; long end = abs((long)dividend); long sor = abs((long)divisor); while(end >= sor) { long temp = sor; int power = 1; while((temp << 1) < end) { temp <<= 1; power <<= 1; } result += power; end -= temp; } return result * sign;}
0 0
- LeetCode: Divide Two Integers
- [LeetCode]Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode] Divide Two Integers
- [Leetcode] Divide Two Integers
- LeetCode Divide Two Integers
- 【leetcode】Divide Two Integers
- [LeetCode]Divide Two Integers
- LeetCode-Divide Two Integers
- LeetCode: Divide Two Integers
- Divide Two Integers - leetcode
- Leetcode: Divide Two Integers
- LeetCode:Divide Two Integers
- leetcode Divide Two Integers
- LeetCode Divide Two Integers
- LeetCode | Divide Two Integers
- Leetcode: Divide Two Integers
- Divide Two Integers -- LeetCode
- 【LeetCode-面试算法经典-Java实现】【098-Validate Binary Search Tree(验证二叉搜索树)】
- linux下logrotate 配置和理解
- oc语言第九课 KVC、KVO与谓词——ios学习连载14
- [LeetCode]Generate Parentheses
- [LeetCode]Swap Nodes in Pairs
- [LeetCode]Divide Two Integers
- UI初级第一课 iPhone开发入门——iOS学习连载15
- jquery.artDialog.source.js学习
- H3C simware模拟器(解决不能tab/?)
- JDBC学习笔记
- 七个免费的Linux FTP客户端--转自51CTO
- 堆栈溢出攻击原理
- 天声人語 20150806
- 导航/画线