LintCode 两个整数相除
2017-10-20 14:21
316 查看
将两个整数相除,要求不使用乘法、除法和 mod 运算符。
如果溢出,返回 2147483647 。
样例
给定被除数 = 100 ,除数 = 9,返回 11。
不使用乘法、除法、mod,利用左移而不是加法(加法慢)来计算。注意溢出问题,计算时用long来计算,得到结果再比较是否溢出。
代码如下:
如果溢出,返回 2147483647 。
样例
给定被除数 = 100 ,除数 = 9,返回 11。
不使用乘法、除法、mod,利用左移而不是加法(加法慢)来计算。注意溢出问题,计算时用long来计算,得到结果再比较是否溢出。
代码如下:
public class Solution { /* * @param dividend: the dividend * @param divisor: the divisor * @return: the result */ public int divide(int dividend, int divisor) { // write your code here if(divisor==0){ return Integer.MAX_VALUE; } long flag=(dividend<0)^(divisor<0)?-1:1; long x=Math.abs((long)dividend); long y=Math.abs((long)divisor); if(x<y){ return 0; } long res=0; while(x>=y){ long temp=y; long tempRes=1; while(x>=(temp<<1)){ temp<<=1; tempRes<<=1; } x-=temp; res+=tempRes; } if(flag*res>Integer.MAX_VALUE || flag*res<Integer.MIN_VALUE){ return Integer.MAX_VALUE; } else{ return new Long(flag*res).intValue(); } } }
相关文章推荐
- lintcode-414-两个整数相除
- 两个整数相除-LintCode
- LintCode:两个整数相除
- lintcode(414)两个整数相除
- LintCode_两个整数相除
- 两个整数相除
- 【LeetCode-面试算法经典-Java实现】【029-Divide Two Integers(两个整数相除)】
- Python两个整数相除得到浮点数值的方法
- Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
- 两个整数相除
- java实现两个整数相除保留一位小数
- java中两个整数相除得到小数点并保留两位小数的方法
- C#中两个整数相除得到带小数点的结果
- Python解决两个整数相除只得到整数部分问题
- LeetCode 29 Divide Two Integers(两个整数相除)(*)
- 寻找两个整数相除后的循环节
- Python3基础 两个除号 两个整数相除 得到商的整数部分
- Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
- 一个google的面试题 计算两个整数相除
- 求两个整数相除的结果