LeetCode : Divide Two Integers [java]
2016-03-09 15:10
417 查看
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
思路:注意使用long进行计算,防止int溢出,然后再判断溢出时重置。
If it is overflow, return MAX_INT.
思路:注意使用long进行计算,防止int溢出,然后再判断溢出时重置。
public class Solution { public int divide(int dividend, int divisor) { if(divisor == 0){ return 0; } long a = Math.abs((long)dividend); long b = Math.abs((long)divisor); long res = 0; boolean isPositive = ((dividend ^ divisor) >> 31) == 0; while (a >= b) { long c = b; for (long i = 0; a >= c; i++, c <<= 1) { a -= c; res += 1 << i; if ((isPositive && res > Integer.MAX_VALUE) || (!isPositive && -res < Integer.MIN_VALUE)) { return Integer.MAX_VALUE; } } } return isPositive ? (int) res : (int) -res; } }
相关文章推荐
- java或者C#发送短信
- 阿里云的OSS的Java_SDK使用时遇到的问题
- JAVA部分集合实现方式的简单概述
- java任务调度
- Java中equals和==的区别
- Spring mvc拦截器实现登录验证拦截
- springMVC中复杂嵌套对象、List等集合类型数据绑定
- Spring MVC 使用心得
- Spring Injection with @Resource, @Autowired and @Inject
- spring中classpath和classpath*的配置区别
- JAVA技术开发规范(1)——开发环境搭建
- springMVC中多个对象的数据绑定
- [疯狂Java]AWT:位图IO
- Java的日期格式化常用方法
- java格式化数字DecimalFormat
- Java关键字final、static使用总结(转)
- Java动态代理的实现
- Java反射机制详解
- java jar包定时运行的脚本编辑步骤
- java在cmd下的命令符