leetcode 29 divide two integers
来源:互联网 发布:水果店软件 编辑:程序博客网 时间:2024/06/05 09:42
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
class Solution {public: int divide(int dividend, int divisor) { if (divisor == 0) return INT_MAX; bool pos = true; if ((divisor < 0 && dividend > 0) || (divisor > 0 && dividend < 0)) pos = false; long long dnd = dividend; long long dor = divisor; dnd = dnd > 0 ? dnd : -dnd; dor = dor > 0 ? dor : -dor; long long ret = div(dnd, dor); ret = pos ? ret : -ret; if (ret > INT_MAX) return INT_MAX; return int(ret); }private: long long div(long long dnd, long long dor) { if (dnd < dor) return 0; if (dnd == dor) return 1; long long add = dor; long long ret = 1; long long lastadd; long long lastret; while (dnd > add){ lastadd = add; lastret = ret; add = lastadd + lastadd; ret = lastret + lastret; } ret = lastret + divide(dnd - lastadd, dor); return ret; }};
参考后
class Solution {public: typedef long long ll; int divide(int dividend, int divisor) { if (divisor == 0) return INT_MAX; bool pos = (divisor < 0) ^ (dividend < 0) ? false : true; ll dnd = dividend; ll dor = divisor; ll ret = 0; dnd = labs(dnd); dor = labs(dor); if (dnd < dor) return 0; while (dnd >= dor){ ll add = dor; ll tmp = 1; while (dnd >= add << 1){ add <<= 1; tmp <<= 1; } dnd -= add; ret += tmp; } ret = pos ? ret : -ret; if (ret > INT_MAX) return INT_MAX; return int(ret); }};
阅读全文
0 0
- leetcode 29: Divide Two Integers
- LeetCode(29)Divide Two Integers
- [leetcode 29] Divide Two Integers
- [leetcode] 29 Divide Two Integers
- leetcode 29 Divide Two Integers
- Leetcode 29 Divide Two Integers
- LeetCode 29 - Divide Two Integers
- leetcode 29 -- Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29: Divide Two Integers
- Leetcode#29 Divide Two Integers
- LeetCode(29)Divide Two Integers
- LeetCode-29 Divide Two Integers
- Leetcode#29||Divide Two Integers
- leetcode-29 Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29:Divide Two Integers
- LeetCode 29: Divide Two Integers
- Maya平常常用的快捷键分享
- ubuntu kylin 14.06+cuda8+cudnn5+opencv3.1+caffe环境搭建
- 【C++】C++ 一些基础小Tips
- linux常用命令之目录处理命令
- hibernate中相关问题hql与sql的不同实现方式
- leetcode 29 divide two integers
- Java Socket网络编程(一)
- Android 图片处理 部分案例整理
- Vue学习笔记八
- 利用mybatis-generator自动生成代码
- 第八节:SpringBoot集成MyBatis
- 树中两个节点最低公共祖先系列算法
- 【SAP干货】创建Search Helps (Elementary and Secondary)
- (转)[Android] 防止连续点击打开两个重复页面的小技巧