不使用乘法、除法、求余数,计算两个数字相除。

使用加法和减法运算。

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的更多相关文章

  1. LeetCode29 Divide Two Integers

    题目: Divide two integers without using multiplication, division and mod operator. If it is overflow, ...

  2. [Swift]LeetCode29. 两数相除 | Divide Two Integers

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  3. LeetCode29.两数相除 JavaScript

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  4. 算法练习--LeetCode--29. Divide Two Integers

    Divide Two Integers Given two integers dividend and divisor, divide two integers without using multi ...

  5. leetcode-29.两数相除(不用乘除法和mod)

    如题,不用乘除法和mod实现两数相除. 这里引用一位clever boy 的解法. class Solution { public: int divide(int dividend, int divi ...

  6. LeetCode29 Medium 不用除号实现快速除法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Divide Two Integers 难度 Medium 描述 给定两个整数,被除数和除数,要求在不使用除号的情况下计算出两数的商 ...

  7. leetcode29 两数相除 int 与移位

    难受啊 考虑越界 考虑dividend为-2^31,用负数移位运算 class Solution { public: int divide(int dividend, int divisor) { i ...

随机推荐

  1. win32 MSG 值

    转自:https://autohotkey.com/docs/misc/SendMessageList.htm WM_NULL = 0x00 WM_CREATE = 0x01 WM_DESTROY = ...

  2. StreamSets 相关文章

    相关streamsets 文章(不按顺序) 学习视频-百度网盘 StreamSets 设计Edge pipeline StreamSets Data Collector Edge 说明 streams ...

  3. tomcat源码阅读之安全机制

    一.领域(Realm): 1.Principal接口代表角色信息,包含了三个成员:用户名.密码.role列表(以逗号分隔),对应了tomcat-users.xml文件中一行user信息: Generi ...

  4. sqlserver2008设置定时任务

    SQL2008 创建定时任务作业 1.打开[SQL Server Management Studio],在[对象资源管理器]列表中选择[SQL Server 代理]:   --2.鼠标右击[SQL S ...

  5. LOJ 121 「离线可过」动态图连通性——LCT维护删除时间最大生成树 / 线段树分治

    题目:https://loj.ac/problem/121 离线,LCT维护删除时间最大生成树即可.注意没有被删的边的删除时间是 m+1 . 回收删掉的边的节点的话,空间就可以只开 n*2 了. #i ...

  6. 【jmeter】jmeter之“参数化”

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  7. OpenFileDialog 打开快捷方式时,返回的是快捷方式引用的路径,而不是快捷方式(.lnk)自身的路径

    OpenFileDialog 打开 .lnk 文件. OpenFileDialog 有个DereferenceLinks 属性:获取或设置一个值,该值指示文件对话框是返回快捷方式引用的文件的位置,还是 ...

  8. JSP+JavaBean+Servlet技术(MVC模型)

    一,Servlet开发用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种 ...

  9. mac的framework的路径

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/S ...

  10. php 生成.csv的文件

    $data = array( "title" => array("服务器", "链接", "对应ID"), &qu ...