1. Divide Two Integers My Submissions QuestionEditorial Solution

    Total Accepted: 66073 Total Submissions: 421509 Difficulty: Medium

    Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

思路:每次减去b(同时b不断的翻倍,从1,2,2^2…)

为什么这样是可行的,因为如果a=nb+x

那么n作为一个整数一定是可以表示成 2m+2m−1+...+21+20

所以从20,21。。。依次减是可行的

#define IMAX numeric_limits<int>::max()
#define IMIN numeric_limits<int>::min()
class Solution {
public:
int divide(int dividend,int divisor) {
assert(divisor!=0);
int sign = (dividend<0&&divisor>0||dividend>0&&divisor<0)?-1:1;
unsigned int a = dividend<0?-dividend:dividend;
unsigned int b = divisor<0?-divisor:divisor;
unsigned int c = b;
int multi=0;
while(a>=b){
int i=1;
while(a>=b){
a -=b;
multi+=i;
if(b<IMAX>>1){
b=b<<1;
i<<=1;
}
}
b=c;
}
if(sign>0&&multi==IMIN)return IMAX;
else return multi*sign;
}
};

最新文章

  1. CKEditor 配置
  2. 银行IT入门深似海
  3. 36.Altium Designer(Protel)网络连接方式Port和Net Label详解
  4. zoj 3620 Escape Time II dfs
  5. Emacs入门快捷键
  6. Centos6.5源码编译安装nginx
  7. Swift编程语言学习3.1排列
  8. gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法
  9. git 修改commit日期为之前的日期
  10. (扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘
  11. SpringCloud的服务消费者 (一):(rest+ribbon)访问注册的微服务
  12. Android项目-高考作文功能简介(一)
  13. Vue(五)Vue规范
  14. Windows linux子系统 使用说明
  15. SQL Server 更新统计信息出现严重错误,应放弃任何可能产生的结果
  16. [LeetCode&amp;Python] Problem 53. Maximum Subarray
  17. Linux DNS 查询剖析(第四部分) | Linux 中国
  18. ThreadGroup其实比ExecutorService更好
  19. jquery接触初级-----juqery 动画函数
  20. Lp空间

热门文章

  1. 微服务(三) Eureka注册中心和Ribbon负载均衡
  2. STM32学习笔记之核心板PCB设计
  3. Spring中自定义Schema扩展机制
  4. 并发编程从零开始(十一)-Atomic类
  5. 字符串匹配 ?kmp : hash
  6. CSS学习笔记:浮动属性
  7. PHP查看内存占用
  8. ELK集群之elasticsearch(3)
  9. ansible模块及语法
  10. 关于React采坑(憨批)系列---类组件(class MyCom extends React.Component--VM47:9 Uncaught TypeError: Super expression must either be null or a function, not undefined)