Leetcode【28】:Divide Two Integers
来源:互联网 发布:火影忍者佐助的刀淘宝 编辑:程序博客网 时间:2024/05/22 11:45
题目:不用乘除和取模运算实现两个整数的除法。
分析:不用乘除和取模,能用的就是加减和位运算(幂好像没啥意义吧)来实现了。
开始考虑到用除数不断减被除数,直到<0,不断修改商,但是这样会TLE,比如dividend=1,而divisor=INT_MAX。因此可以考虑使用移位运算,即一次减去被除数的1倍,2倍,4倍。。。当不满足时继续从头开始直到divisor<dividend。
class Solution {public:int divide(int dividend, int divisor){long long A=abs((long long)dividend);long long B=abs((long long)divisor);//必须转换成long long,防止INT_MIN转成正数时溢出。long long res=0;while(A>=B){//继续迭代直到A<Blong long C=B;int count=0;while(A>=C){A-=C;res+=1<<count;//修改商的结果count++;C=C<<1;//把被除数加倍}//某次迭代导致divisor<divisor<<count。}if((dividend>0&&divisor<0) || (dividend<0&&divisor>0))res=-res;//判定商的正负return (int)res;//转换成int}};
0 0
- LeetCode 28 Divide Two Integers
- Leetcode【28】:Divide Two Integers
- LeetCode 28 Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode]Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode] Divide Two Integers
- [Leetcode] Divide Two Integers
- LeetCode Divide Two Integers
- 【leetcode】Divide Two Integers
- [LeetCode]Divide Two Integers
- LeetCode-Divide Two Integers
- LeetCode: Divide Two Integers
- Divide Two Integers - leetcode
- Leetcode: Divide Two Integers
- LeetCode:Divide Two Integers
- leetcode Divide Two Integers
- LeetCode Divide Two Integers
- 我曾经做过的一些Android开发项目
- Codeforces Beta Round #51 D. Beautiful numbers (数位dp)
- jquery-form api
- sqlalchemy文档资料翻译(一)
- AMD+WIN7+VMware安装MAC OS X 10.6.3 和 Xcode 3.2.2
- Leetcode【28】:Divide Two Integers
- OC基本语法及知识要点汇总
- Cocos2d-x使用Luajit将Lua脚本编译为bytecode,实现加密 更新
- 让我深刻的2个开发项目
- 在非Activity类里面启动Intent、Toast等。
- sqlalchemy文档资料翻译(二)
- Ubuntu 14.04下Gedit编辑器设置为多语言编辑及集成开发环境
- 第一个struts1案例分析
- 怀疑老婆出轨怎么查看她的微信聊天记录?