LeetCoder 29. Divide Two Integers
来源:互联网 发布:查找企业的软件 编辑:程序博客网 时间:2024/06/08 00:09
题意
计算两个数相除,要求不能使用除法
思路
不能使用除法,但是可以使用减法来实现,如果使用普通的减法会超时,所以可以采用倍增的方法,例如:
计算
利用
需要注意的
- 取绝对值之后
int 溢出 - 当
divisor 为-1的时候的溢出情况
代码
class Solution {public: int divide(int dividend, int divisor) { size_t flag = 1; if(divisor == 0) return INT_MAX; if(dividend == INT_MIN && divisor == 1) return INT_MIN; if(dividend == INT_MIN && divisor == -1) return INT_MAX; if(dividend < 0) flag = -1; if(divisor < 0){ if(flag == -1) flag = 1; else flag = -1; } long long up = abs((long long)dividend); long long down = abs((long long)divisor); long long cnt = 0; while(up >= down) { long long num = 1; while(up >= (num * down)) { up -= num * down; cnt += num; num *= 2; } } return cnt * flag; }};
阅读全文
0 0
- LeetCoder 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- html 事件 转义符 \ 加你 的字符
- 堆排序
- ProcessModule
- cntk深度网络配置二
- Hive安装本地模式
- LeetCoder 29. Divide Two Integers
- C语言知识点
- 添加随机的游戏元素
- c语言中,关于延迟函数的理解
- 关于Filter(过滤器)的源码翻译(一)
- vs2017上配置SQLite3
- Android DataBinding使用总结(三)列表展示
- 输入一个链表,从尾到头打印链表每个节点的值。
- C语言字符串函数大全