29. 两数相除

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

返回被除数 dividend 除以除数 divisor 得到的商。

示例 1:

输入: dividend = 10, divisor = 3

输出: 3

示例 2:

输入: dividend = 7, divisor = -3

输出: -2

说明:

被除数和除数均为 32 位有符号整数。

除数不为 0。

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/divide-two-integers

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

PS:使用对数

class Solution {
public int divide(int dividend, int divisor) {
if (divisor == 1) {
return dividend;
}
double dividendDou = (double) dividend;
double divisorDou = (double) divisor;
double logAns = Math.log(Math.abs(dividendDou)) - Math.log(Math.abs(divisorDou));
double answer = Math.exp(logAns);
if ((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0)) {
answer = -answer;
}
return (int) answer;
}
}

PS:这个方法是除法

class Solution {
public int divide(int dividend, int divisor) {
if (dividend == 0) {
return 0;
}
if (dividend == Integer.MIN_VALUE && divisor == -1) {
return Integer.MAX_VALUE;
}
boolean negative;
negative = (dividend ^ divisor) <0;//用异或来计算是否符号相异
long t = Math.abs((long) dividend);
long d= Math.abs((long) divisor);
int result = 0;
for (int i=31; i>=0;i--) {
if ((t>>i)>=d) {//找出足够大的数2^n*divisor
result+=1<<i;//将结果加上2^n
t-=d<<i;//将被除数减去2^n*divisor
}
}
return negative ? -result : result;//符号相异取反
}
}

最新文章

  1. MongoDB基础知识
  2. grunt安装与配置
  3. Eclipse工作常见问题总结
  4. &lt;li&gt;高度自适应
  5. leetcode 27
  6. [itint5]两数积全为1
  7. Linux系统编程(19)——正则表达式在sed和awk中的使用
  8. SQL总结之导入导出
  9. 使用Intellij IDEA将web项目导出为war包
  10. 莫烦keras学习自修第三天【回归问题】
  11. linux基础学习之软件安装以及常用命令
  12. python之random函数
  13. 1: java开发_&quot;&quot;和null的区别
  14. 使用natapp将本地服务映射到外网
  15. 学习-工作:GTD
  16. jquery 网页局部打印总结
  17. android sdk更新代理设置
  18. HTML &lt;video&gt; 标签
  19. TCP滑动窗口协议
  20. 【Jmeter】Jmeter 5.0新特性

热门文章

  1. [java作业]Fan、求直线交点、Triangle2D、选课
  2. SQL 选择列 IF表达式,Contains表达式的用法
  3. 20184302 实验三《Python程序设计》实验报告
  4. node 之 ... 扩展运算符报错
  5. poj3694 连通无向图图加边后有多少桥
  6. spring的mybatis-puls 配置,增删改查操作,分页
  7. solr学习(笔记) windows10+jdk1.8+tomcat8环境部署
  8. Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
  9. JavaScript 实现 冒泡排序
  10. webpack@next webpack-multi-page-cli 多页脚手架2.0