leetcode29
不使用乘法、除法、求余数,计算两个数字相除。
使用加法和减法运算。
Java实现代码如下:
 class Solution {
     public int divide(int dividend, int divisor) {
         if (dividend == Integer.MIN_VALUE && divisor == -) {
             return Integer.MAX_VALUE;
         }
         long a = Math.abs((long)dividend);
         long b = Math.abs((long)divisor);
         int num = ;
         long sum;
         while (b <= a) {
             sum = b;
             int count = ;
             while (sum + sum <= a) {
                 count += count;
                 sum += sum;
             }
             a = a - sum;
             num = num + count;
         }
         if ((dividend <  && divisor > ) || dividend >  && divisor < ) {
             num = -num;
         }
         return num;
     }
 }
上述代码用实际的例子进行解释,假设a=10,b=3,主要介绍10~19行的循环体的逻辑。
外部循环1:判断 3 <= 10满足
内部循环1.1:3 + 3 <= 10满足,count = 2,sum = 6
内部循环1.2:6 + 6 <= 10不满足,跳出内部循环,a = 10 - (3 + 3) = 4,num = 0 + 2 = 2
外部循环2:判断3 <= 4满足,
内部循环2.1:3 + 3 <= 4不满足,跳出内部循环,a = 4 - 3 = 1,num = 2 + 1 = 3。
最终num=3,即为所求。可分析,这里是计算在b的倍数,不超过a的情况下,最多是b的几倍。
用连续的加法来计算乘法,用减法来计算求余。
leetcode29的更多相关文章
- LeetCode29 Divide Two Integers
		题目: Divide two integers without using multiplication, division and mod operator. If it is overflow, ... 
- [Swift]LeetCode29. 两数相除 | Divide Two Integers
		Given two integers dividend and divisor, divide two integers without using multiplication, division ... 
- LeetCode29.两数相除 JavaScript
		给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ... 
- 算法练习--LeetCode--29. Divide Two Integers
		Divide Two Integers Given two integers dividend and divisor, divide two integers without using multi ... 
- leetcode-29.两数相除(不用乘除法和mod)
		如题,不用乘除法和mod实现两数相除. 这里引用一位clever boy 的解法. class Solution { public: int divide(int dividend, int divi ... 
- LeetCode29 Medium 不用除号实现快速除法
		本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Divide Two Integers 难度 Medium 描述 给定两个整数,被除数和除数,要求在不使用除号的情况下计算出两数的商 ... 
- leetcode29 两数相除 int 与移位
		难受啊 考虑越界 考虑dividend为-2^31,用负数移位运算 class Solution { public: int divide(int dividend, int divisor) { i ... 
随机推荐
- yocto和bitbake
			一.yocto 1.yocto简介 Yocto 是一个开源社区通过它提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 ... 
- MySQL--增加或修改列注释
			##=============================================## ## 在创建表的时候为字段添加注释 ## CREATE TABLE TB003 ( ID INT P ... 
- chrome 小技巧:保持元素的hover状态
			审查元素,选中需要hover的标签 点击"Styles"菜单中的":hov",弹出 Force element state 选中相应的 :hover :acti ... 
- js 坐标兼容性
			不同浏览器对坐标属性的支持: 
- 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类
			图 1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ... 
- mysqldump的single-transaction
			先看一下--lock-tables和--lock-all-tables --lock-all-tables 一次性锁定所有数据库的所有表,在整个dump期间一直获取global read lock: ... 
- Extjs Column布局常见问题及解决方法
			原文地址:http://blog.csdn.net/weoln/article/details/4339533 第一次用Extjs的column布局时遇见了很多问题,记录下来,供大家参考.column ... 
- view的setTag() 和 getTag()应用 ViewHolder
			转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外 ... 
- WebForm Response和Request以及Cookie
			Session:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cookies一样, 内置对象:用于页面之间的数据交互 为什么要使用这么内 ... 
- python-appium520-3引入unittest,编写自动化用例
			unittest是python的测试框架,和junit相似. test.py import unittest class Apptest(unittest.TestCase): def setUp(s ... 
