Divide Two Integers
2016-03-11 14:28
405 查看
思路:不能单步减法,时间会超时。当第一次减完后被减数仍大减数,这时减数可采用2的指数增加,直到大于被减数后,被减数缩小,再次重新这个过程。
注意调试时,出现的错误:
int dividend = -2147483648;
long b=-dividend;(其实b仍等于 -2147483648,因为右边-dividend其实已经运算过后,越界后的值赋给左边)
还有循环内的b,count 仍要为long型,因为可能相加过后越界。
注意调试时,出现的错误:
int dividend = -2147483648;
long b=-dividend;(其实b仍等于 -2147483648,因为右边-dividend其实已经运算过后,越界后的值赋给左边)
还有循环内的b,count 仍要为long型,因为可能相加过后越界。
class Solution { public: int divide(int dividend, int divisor) { int MAX_INT=2147483647; if(divisor==0||(dividend==-(MAX_INT+1)&&divisor==-1)) return MAX_INT; if(dividend==0) return 0; int flag=1,count=1,a; long long dend=dividend; long long sor=divisor; long long b; int quotient=0; if(dividend<0){ flag=-flag; dend=-dend;} if(divisor<0){ flag=-flag; sor= -sor;} if(dend<sor) return 0; while(dend>=sor) { count=1; b=sor; while(b+b<=dend) { b+=b; count+=count; } dend-=b; quotient+=count; } if(flag<0) quotient=-quotient; return quotient; } };
相关文章推荐
- AS设置自动import 所需要的类包
- mysql数据库FULLTEXT索引的用法和作用
- AlphaGo开发者:不存在秘密协议
- AlphaGo开发者:不存在秘密协议
- nodejs学习笔记1
- 斯特林公式
- Java中策略设计模式
- iOS 解决键盘遮挡问题
- WR703N路由器安装OpenWRT并运行连接校园网
- ping tracert 用法
- 【struts2】ActionContext与ServletActionContext
- Http Get和Post区别
- AR技术不得不说的秘密
- Rust的注释
- 循环链表
- js 执行环境及作用域
- html页面中点击链接自动跳出相应用户的QQ聊天窗口的做法
- MFC多媒体定时器与普通定时器的比较
- Android笔记--Android Studio 引用第三方开源类okhttp、gson库时的打包混淆
- mysql数据库如何创建索引