59. Divide Two Integers
2024-09-05 22:09:15
- 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;
}
};
最新文章
- CKEditor 配置
- 银行IT入门深似海
- 36.Altium Designer(Protel)网络连接方式Port和Net Label详解
- zoj 3620 Escape Time II dfs
- Emacs入门快捷键
- Centos6.5源码编译安装nginx
- Swift编程语言学习3.1排列
- gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法
- git 修改commit日期为之前的日期
- (扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘
- SpringCloud的服务消费者 (一):(rest+ribbon)访问注册的微服务
- Android项目-高考作文功能简介(一)
- Vue(五)Vue规范
- Windows linux子系统 使用说明
- SQL Server 更新统计信息出现严重错误,应放弃任何可能产生的结果
- [LeetCode&;Python] Problem 53. Maximum Subarray
- Linux DNS 查询剖析(第四部分) | Linux 中国
- ThreadGroup其实比ExecutorService更好
- jquery接触初级-----juqery 动画函数
- Lp空间
热门文章
- 微服务(三) Eureka注册中心和Ribbon负载均衡
- STM32学习笔记之核心板PCB设计
- Spring中自定义Schema扩展机制
- 并发编程从零开始(十一)-Atomic类
- 字符串匹配 ?kmp : hash
- CSS学习笔记:浮动属性
- PHP查看内存占用
- ELK集群之elasticsearch(3)
- ansible模块及语法
- 关于React采坑(憨批)系列---类组件(class MyCom extends React.Component--VM47:9 Uncaught TypeError: Super expression must either be null or a function, not undefined)