Java实现 LeetCode 29 两数相除
2024-10-19 17:27:43
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;//符号相异取反
}
}
最新文章
- MongoDB基础知识
- grunt安装与配置
- Eclipse工作常见问题总结
- <;li>;高度自适应
- leetcode 27
- [itint5]两数积全为1
- Linux系统编程(19)——正则表达式在sed和awk中的使用
- SQL总结之导入导出
- 使用Intellij IDEA将web项目导出为war包
- 莫烦keras学习自修第三天【回归问题】
- linux基础学习之软件安装以及常用命令
- python之random函数
- 1: java开发_";";和null的区别
- 使用natapp将本地服务映射到外网
- 学习-工作:GTD
- jquery 网页局部打印总结
- android sdk更新代理设置
- HTML <;video>; 标签
- TCP滑动窗口协议
- 【Jmeter】Jmeter 5.0新特性
热门文章
- [java作业]Fan、求直线交点、Triangle2D、选课
- SQL 选择列 IF表达式,Contains表达式的用法
- 20184302 实验三《Python程序设计》实验报告
- node 之 ... 扩展运算符报错
- poj3694 连通无向图图加边后有多少桥
- spring的mybatis-puls 配置,增删改查操作,分页
- solr学习(笔记) windows10+jdk1.8+tomcat8环境部署
- Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
- JavaScript 实现 冒泡排序
- webpack@next webpack-multi-page-cli 多页脚手架2.0