29. Divide Two Integers
来源:互联网 发布:南昌神起网络 编辑:程序博客网 时间:2024/05/15 09:54
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
思路:这题真是做了漫长的一下午! 最简单的方法就是被除数
class Solution {public: int divide(int dividend, int divisor) { if(!divisor) return dividend>=0 ? INT_MAX : INT_MIN; //如果除数为0的情况 if(dividend==INT_MIN && divisor==-1) return INT_MAX; // 如果被除数为最小值,除数为-1的时候,得到的结果会超过最大数 long long a = abs((long long)dividend); //转成long long怕左移的时候溢出 long long b = abs((long long)divisor); int shift = 0; int res = 0; long long remain = a; while (remain >= b) { long long tmp = b; shift = 0; while (remain >= tmp) { tmp <<= 1; shift++; } res += 1 << (shift - 1); long long tmp2 = b << (shift - 1); remain = remain - tmp2; } // res = ((dividend ^ divisor) >> 31) ? (-res) : (res); // if (res > INT32_MAX) return INT32_MAX; if ((divisor > 0) != (dividend > 0)) res = -res; return res; }};
0 0
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- CSS-相對于父元素絕對定位
- android艺术开发探索之消息机制
- adb 和 shell、Logcat 常用命令
- leetcode_c++:Longest Common Prefix(014)
- SDUT3403数据结构实验之排序六:希尔排序
- 29. Divide Two Integers
- 使用proxifier代理LOL、橘子等游戏的教程
- 利用贝叶斯分类器进行文本挖掘---笔记
- HDU2188(巴什博奕)
- TCP、UDP区别
- ios scrollView联动处理-左边悬停、上面悬停
- 开始学习计算几何啦
- java使用正则表达式提取方括号中内容
- 卡尔曼滤波_2(图解)