leetcode
来源:互联网 发布:房贷利息抵扣个税算法 编辑:程序博客网 时间:2024/05/18 12:34
Question29–Divide Two Integers
给定两个int型数,一个被除数,一个除数(不为零),在不使用乘法、除法、取余操作的条件下,求出商。若溢出,则返回INT_MAX。
算法
- 溢出的情况只有一种,即被除数为INT_MIN,除数为-1.
- 确定符号,两个数同号为正,异号为负,因此可以用异或操作来定符号。
- 当然最容易的就是一直用被除数减去除数,记录次数,直到被除数小于除数。但这样会超过时间限制。
- 另一种方法是,在不断减的过程中,让除数翻倍,即第一次减掉一个除数,第二次除数变为原来2倍,因此减掉两个原始除数,一直做,直到除数翻倍时大于了剩余的被除数,则从头来过,将除数置为初始的除数。
code
int divide(int dividend, int divisor) { if(dividend==INT_MIN&&divisor==-1) return INT_MAX; int sign=((dividend<0)^(divisor<0))?-1:1; long long a=labs(dividend), b=labs(divisor); int quotient=0,q=1; long long sum; while(a>=b){ sum=b; q=1; a=a-sum; quotient+=q; while((sum<<1)<=a){ sum=sum<<1; q=q<<1; a=a-sum; quotient+=q; } } return sign*quotient;}
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- java学习笔记--数组
- Selenium3+Python3+PhantomJS配置及测试解析
- 2-3 jdk安装
- jsp直接显示数据库表格信息
- TensorFlow 逻辑回归样例代码
- leetcode
- Gym-101490H Multiplying Digits(进制转化--倒着)
- Java 没有无符号数
- bzoj 2957: 楼房重建(分块)
- Andorid:Service启动的两种方式及区别
- Anaconda学习总结
- TensorFlow 模拟线性回归代码样例
- Java内存泄漏总结
- PTA 7-21(排序) PAT排名汇总(25 分)25分代码