leetcode: Divide Two Integers
来源:互联网 发布:芯片和单片机的区别 编辑:程序博客网 时间:2024/05/21 17:59
只能说这个题目很贱。主要是-2^32变成绝对值之后会超出int的界,所以用long 来存
dd=Math.abs((long)dividend);
dr=Math.abs((long)divisor);
解题想法原来是:divide(dividend, divisor)=divide(dividend/2, divisor)+divide(dividend/2, divisor)
用二分法,不过奇偶数考虑挺麻烦的,于是每次(除数*2),比如100/17,先算出17*4<100,17*8>100
然后再算(100-17*4)=32/17,这样得到4+1=5.
public class Solution {
public int divide(int dividend, int divisor) {int i=1;
int rst=0;
int sign=1;
long dd,dr;
dd=Math.abs((long)dividend);
dr=Math.abs((long)divisor);
if(dividend<0)
sign*=-1;
if(divisor<0)
sign*=-1;
long tmp=dr;
while(tmp<=dd)
{
while(tmp<=dd/2)
{
tmp+=tmp;
i+=i;
}
rst+=i;
i=1;
dd-=tmp;
tmp=dr;
}
return rst*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
- 周鸿祎,高司令
- 三角形- 白盒测试实例
- 对指针的初步理解
- PRINCE2的7大使用原则
- STUN和TURN技术浅析
- leetcode: Divide Two Integers
- 小程序猿的工作偷懒之路(2)- 使用模板方法来解放你的双手
- ZOJ 3686 后序遍历线段树
- HTML5 flappy bird
- PHP学习 PDO连接数据库和设备常量的操作
- 蛙步学排序算法之二 - 选择排序
- aircrack-ng破解wpa/wpa2的命令
- 网络编程之路---11
- (16)创建临时文件