LeetCode两数相除java
这是力扣上的一道题,参考评论区。
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。
示例 1:
输入: dividend = 10, divisor = 3 输出: 3
示例 2:
输入: dividend = 7, divisor = -3 输出: -2
说明:
1、被除数和除数均为 32 位有符号整数。
2、 除数不为 0。
3、假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 −1]。本题中,如果除法结果溢出,则返回 231 − 1。
主要思想是将除法变成减法,判断符号位用异或运算,都变成负数方便处理(最后结果看符号位是false表示是正数,加上-),主要是两个while,外侧看被除数还能否减去除数,内侧则是以x2方式增加除数大小,这里要注意i=-2147483648;j=-1这个用例。
public class 两数相除191208 {public static int fun(int dividend, int divisor) {// 符号位 异号为trueboolean negative = (dividend ^ divisor) < 0;// 都变成负数int result = 0;if (dividend > 0) {dividend = -dividend;}if (divisor > 0) {divisor = -divisor;}// 外循环直到被除数不能再减除数。while (dividend <= divisor) {int result_temp = -1;int divisor_temp = divisor;// 内循环找可以被除数x2除的,这样快点,二分?while (dividend <= (divisor_temp << 1)) {// int i = -2147483648;// int j = -1;// 上面用例会使除数temp溢出为0,然后死循环。下面if排除该情况if (divisor_temp <= (Integer.MIN_VALUE >> 1)) {break;}divisor_temp = divisor_temp << 1;result_temp = result_temp << 1;}dividend -= divisor_temp;result += result_temp;}// 不是异号加个符号,超出最小值返回最大值if (!negative) {if (result <= Integer.MIN_VALUE) {return Integer.MAX_VALUE;}result = -result;}return result;}public static void main(String[] args) {int i = -2147483648;int j = -1;int res = fun(i, j);System.out.println(res);}
LeetCode两数相除java相关推荐
- ※29. 两数相除(java)
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商.整数除法的结果应当 ...
- Leetcode 两数相除
两数相除 题目描述: 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的 ...
- 两数相除之分析问题解决问题
分析解决问题 前言 一.两数相除 二.位运算 总结 参考文献 前言 做题不要杂乱无章的想,单凭记忆去模仿,而是要抓住问题中所给的你认为的关键,去分析,去找方法解决. 一.两数相除 二.位运算 pack ...
- Java实现 LeetCode 29 两数相除
29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商 ...
- [Leetcode][JAVA]第[29]题[两数相除][二分法]
[问题描述][中等] 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的 ...
- leetCode:twoSum 两数之和 【JAVA实现】
LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...
- LeetCode 27移除元素28实现strStr()29两数相除
维护幸苦,如有打卡欢迎关注公众号bigsai回复进群,如有帮助欢迎点赞支持! 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长 ...
- LeetCode 29. 两数相除(位运算)
1. 题目 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示 ...
- leetcode —— 29. 两数相除
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 整数除法的结果 ...
最新文章
- python编程100例画图-python 画图示例源码(Turtle Graphics)
- C语言main函数、return、exit函数
- 订单自动生成器的算法研究与实现
- leader选举的源码分析-quorumPeer.createElectionAlgorithm
- POJ-1861-Network 解题报告
- 【kafka】kafka 启动报错 InvalidReceiveException: Invalid receive (size = -720899)
- dbforge studio for oracle,dbForge Studio for Oracle(数据库管理软件)官方版
- 简单的图论问题【湖南省赛】
- JavaWeb那些事儿(一)--为什么做java的web开发使用struts2,springMVC和spring这样的框架
- 正则化regularization
- java类和对象数组传参_Java 练习(替换数组元素, 将对象作为参数传递给方法)
- skimage io.imread
- 拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化
- 对称密钥密码体制的主要特点
- FTP网络服务器 Xlight+FlashFXP
- 180422 3步法Windows10引导Ubuntu开机启动
- 华芯微特SWM220R8T7-LQ64-22100最小系统板测试版开发板面包板
- C++_输入一个字符串,并逆序输出
- Python与医疗图像3
- 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字
热门文章
- freertos 创建互斥量_freertos任务通信
- 计算机二级考试c语言冲刺,计算机二级C语言考试冲刺练习题
- 新浪微博登陆以及发送微博(附python源码)
- Bootstrap补充
- 使用log4net记录日志到数据库(含有自定义属性)
- java 蓝桥杯算法训练 纪念品分组(题解)
- 计算机启用网络查找,怎么搜索局域网中的电脑
- 销售流程图_34页财务管理制度和流程图!让你明白会计工作要点,总结全面清晰...
- JVM专题之分代模型:年轻代、老年代、永久代
- 怎么将文件转换成linux文件,你如何在linux中创建一个将文件转换为大写...