29-m-Divide Two Integers
来源:互联网 发布:软件需求整理 编辑:程序博客网 时间:2024/06/03 22:41
不用乘除模来整除两个int。那就只还剩左移右移了。这题很好的阐释了除法,就是算被除数有几个除数。因此想到肯定在除数上做文章,否则一次一个除数累加的话肯定超时,也没意义。最自然的想到每次循环后除数左移一位,那么问题就在于每次除数大于被除数一半时,要退出循环将除数归为1倍再继续累加结果。这里的while和for循环挺妙,合理的描述了此流程(当时被这里难住了,好像是网搜了才借鉴过来的)。
如下:
int divide(int dividend, int divisor) { if (divisor == 0 || dividend == 0) return 0; if (divisor == 1) return dividend; if (divisor == dividend) return 1; long long result = 0; long long dend = dividend; if (dividend < 0) dend = -(long long)dividend; long long visor = divisor; if (divisor < 0) visor = -(long long)divisor; while (dend >= visor) { long long temp = visor; for (int i = 0; dend >= temp; i++, temp = temp << 1) { dend -= temp; result = result + (1 << i); } } if ((divisor > 0 && dividend < 0) || (divisor < 0 && dividend > 0)) result = -result; if (result > 2147483647) result = 2147483647; else if (result < -2147483648) result = -2147483648; return (int)result;}
0 0
- 29-m-Divide Two Integers
- #29 Divide Two Integers
- 29Divide Two Integers
- 29Divide Two Integers
- #29 Divide Two Integers
- 29 Divide Two Integers
- 【29】Divide Two Integers
- 29Divide Two Integers
- leetcode 29: Divide Two Integers
- LeetCode(29)Divide Two Integers
- [leetcode 29] Divide Two Integers
- [leetcode] 29 Divide Two Integers
- leetcode 29 Divide Two Integers
- Leetcode 29 Divide Two Integers
- LeetCode 29 - Divide Two Integers
- leetcode 29 -- Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29: Divide Two Integers
- Django教程:[30]DJANGO_SETTINGS_MODULE配置
- printf/scanf---格式化输出符号详细说明
- Apache域名自动指向虚拟主机目录
- NGUI的UIScrollview的优化
- java.lang.OutOfMemoryError: Java heap space
- 29-m-Divide Two Integers
- Merge k sorted linked lists
- [c++]整形类Int的各种算数操作
- 变长参数函数说明
- android viewPager实现轮播效果一(本地图片篇)
- LeetCode---(7)Reverse Integer
- 十三周项目二
- LeetCode 之 Merge Two / k Sorted Lists — C/C++ 实现
- VS2008/VS2012/MFC/C++/ACCESS/Redistributable Package/installshield/打包/安装/部署