leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
来源:互联网 发布:西安网络直播招聘 编辑:程序博客网 时间:2024/06/05 05:54
Divide Two Integers
If it is overflow, return MAX_INT.
思路:这个题算法上不是很难,但是通过率相当低,只有15%,果然,自己在写完之后,各种出错,而且错误不是算法上的错误,是各种边界值没有考虑到,很多溢出错误等。下面是具体代码,有详细注释。
public class Solution { public int divide(int dividend, int divisor) { long a = dividend; long b = divisor; if(b == 0 || (a == Integer.MIN_VALUE && b == -1)){//如果被除数为0或溢出 return Integer.MAX_VALUE; } boolean isNegative = false;//是否负数 //将负数转成正数 if(a < 0 && b > 0){ isNegative = true; a = -a; }else if(a > 0 && b < 0){ isNegative = true; b = -b; }else if(a < 0 && b < 0){ a = -a; b = -b; } if(b == 1){ return (int) (isNegative?-a:a); } //如果被除数大,返回0 if(a < b){ return 0; } divisor = (int) b;//如果是负,将转变为正数 int step = 1; while(b < a){//如果b<a,则b = b*2 step <<= 1;//右移一位,相当于乘于2 b <<= 1;//b = b*2 } if(b == a){//如果相等,直接返回 return isNegative? -step : step;//判断是否为负数 } dividend = (int) (a - (b >> 1)); step >>= 1; int num = step + divide(dividend,divisor);//递归调用 return isNegative?-num:num;//返回结果,并判断正负 }}
0 0
- leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
- Leetcode #29 Divide Two Integers 整数相除 解题报告
- Leetcode刷题记——29. Divide Two Integers(整数相除Divide two integers without using multiplication, division)
- leetcode 29 Divide Two Integers(整数相除)
- Divide Two Integers 两个整数相除
- LeetCode----29. Divide Two Integers (两数相除)
- [leetcode] 29. Divide Two Integers 解题报告
- [Leetcode] 29. Divide Two Integers 解题报告
- LeetCode OJ 之 Divide Two Integers (两个整数相除)
- 【LeetCode-面试算法经典-Java实现】【029-Divide Two Integers(两个整数相除)】
- [LeetCode-29] Divide Two Integers(两个整数相除,不用乘除取余算术符)
- LeetCode 29 Divide Two Integers(两个整数相除)(*)
- 5.divide-two-integers(两个整数相除)
- LeetCode | Divide Two Integers(两个数相除)
- Divide Two Integers 两数相除@LeetCode
- [leetcode]29. Divide Two Integers@Java解题报告
- [LeetCode] Divide Two Integers 解题报告
- [leetcode javascript解题]Divide Two Integers
- 几张截图
- c语言链表的创建、插入、删除、排序
- Sublime Text3 注册码,亲测可用
- MVC三层结构 设计项目步骤总结
- 完成一个简单的时间片轮转多道程序内核代码(一)
- leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
- OGNL详解
- Jquery怎么获取元素文档大小、偏移、位置和滚动条位置
- 如何找到系统的usr目录
- frameset网页框架布局模式
- HDU 1548 A strange lift(bfs)
- 设计模式六大原则(6):开闭原则
- poj 3253 Fence Repair(哈夫曼+二叉堆)
- Filter 统一全站编码