CODE 104: Divide Two Integers
来源:互联网 发布:c4d r18 for mac迅雷 编辑:程序博客网 时间:2024/05/16 10:46
Divide two integers without using multiplication, division and mod operator.
public int divide(int dividend, int divisor) {// IMPORTANT: Please reset any member data you declared, as// the same Solution instance will be reused for each test case.if (divisor == 1) {return dividend;} else if (divisor == -1) {return -dividend;} else if (Math.abs(divisor) == 2) {int number = dividend >> 1;if (divisor < 0) {return -number;}return number;}long ldividend = 0L;long ldivisor = 0L;boolean isDividendFuShu = false;boolean isDivisorFuShu = false;if (divisor < 0) {isDivisorFuShu = true;ldivisor = Math.abs((long) divisor);} else {ldivisor = divisor;}if (dividend < 0) {isDividendFuShu = true;ldividend = Math.abs((long) dividend);} else {ldividend = dividend;}long start = 0l;long end = ldividend;while (start < end - 1) {long mid = start + (end - start) / 2;long tmpNumber = add(mid, ldivisor);if (tmpNumber < ldividend) {start = mid;} else if (tmpNumber > ldividend) {end = mid;} else {if ((isDividendFuShu && !isDivisorFuShu)|| (!isDividendFuShu && isDivisorFuShu)) {return -(int) mid;} else {return (int) mid;}}}if ((isDividendFuShu && !isDivisorFuShu)|| (!isDividendFuShu && isDivisorFuShu)) {return -(int) start;} else {return (int) start;}}long add(long p, long num) {if (0 == p) {return 0;}long tmp = add(p >> 1, num) << 1;if ((p & 1) != 0) {tmp += num;}return tmp;}
- CODE 104: Divide Two Integers
- leet code -- Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode]Divide Two Integers
- LeetCode: Divide Two Integers
- [LeetCode] Divide Two Integers
- Divide Two Integers
- Divide Two Integers
- LeetCode28:Divide Two Integers
- [Leetcode] Divide Two Integers
- LeetCode Divide Two Integers
- Divide Two Integers
- 【leetcode】Divide Two Integers
- Divide Two Integers
- Divide Two Integers
- [LeetCode]Divide Two Integers
- Divide Two Integers
- LeetCode-Divide Two Integers
- OCP-1Z0-053-V12.02-56题
- Android Fragment使用和学习
- 我理解的三路握手
- C++中OOP个性的地方之一
- 设计模式:适配器模式(7.1.2)C++版
- CODE 104: Divide Two Integers
- android手机的刷机
- 网页编码就是那点事
- C++/C const问题
- Java学习第六课 JAVA 文件操作
- cannot call methods on button prior to initialization; attempted to call method 'toggle' 解决
- CG学习prepare
- 数据库学习第四篇(对基本表数据的查询2)
- 学习autotools