每日算法之二十五:Divide Two Integers
来源:互联网 发布:我淘宝主营不超过80 编辑:程序博客网 时间:2024/06/05 22:39
Divide two integers without using multiplication, division and mod operator.
不使用乘法、除法和求模运算求两个数相除。
class Solution {public: long long internalDivide(unsigned long long dividend,unsigned long long divisor) { if(dividend<divisor) return 0; int result = 1; unsigned long long temp = divisor,left; while(temp<=dividend) { left = dividend - temp; temp<<=1; if(temp>dividend) break; else result<<=1; } return result + internalDivide(left,divisor); } int divide(int dividend, int divisor) { unsigned long long _dividend = abs(static_cast<long long>(dividend)), _division = abs(static_cast<long long>(divisor)); bool flag = ((dividend<=0)&&(divisor>0))|| ((dividend>=0)&&(divisor<0)); return flag?(-1)*internalDivide(_dividend,_division):internalDivide(_dividend,_division); }};
简要分析,以87/4为例:4小于87,4左移一位变成8,计数左移一位变成2。8小于87,继续左移变成16,计数变成4.16小于87左移变成32,计数变成8。32小于87左移变成64,计数变成16。继续左移变成128大于87。87减去64 = 23。计数为16倍。用23继续上述步骤,知道
0 0
- 每日算法之二十五:Divide Two Integers
- LeetCode OJ算法题(二十八):Divide Two Integers
- leetcode之Divide Two Integers
- Leetcode之Divide Two Integers
- LeetCode之Divide Two Integers
- LeetCode 之 Divide Two Integers
- leetcode之Divide Two Integers
- 【Leetcode】之Divide Two Integers
- Leetcode之Divide Two Integers
- LeetCode 之 Divide Two Integers
- Algorithm之路二十九:Divide Two Integers
- 29. Divide Two Integers(二刷)
- 算法作业HW22:LeetCode29 Divide Two Integers
- 算法系列——Divide Two Integers
- (算法分析Week7)Divide Two Integers[Medium]
- leetcode之路029 Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode]Divide Two Integers
- Java的泛型,反射,注解
- 模板方法模式
- 爱阅读,经典编程图书分享
- 【端午小练】HDU1846-Brave Game
- javabean, ejb, entitybean的区别,以及POJO的概念
- 每日算法之二十五:Divide Two Integers
- 链表倒序
- linu串口编程入门
- Java多线程与并发库高级应用
- 如果程序中同时出现了typedef和#define,编译器会怎么办?
- Log4Net使用指南
- Android中Intent的匹配规则和注意事项
- Myeclipse导入工程乱码解决办法
- 数据科学工具箱week3笔记