leetcode-29 Divide Two Integers
来源:互联网 发布:万得资讯软件 编辑:程序博客网 时间:2024/05/22 17:49
问题描述:
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
问题分析:
转化为位运算与加减法相结合;
注意处理Integer.MIN_VALUE (-2147483648)的特殊情况,此时应当返回Integer.MAX_VALUE(2147483647)
代码:
public class Solution { public int divide(int dividend, int divisor) { // 处理特殊情况 if(divisor == 1) return dividend; if(dividend == Integer.MIN_VALUE && Math.abs(divisor)== 1) return Integer.MAX_VALUE; // 判断结果的符号 int sign = (dividend > 0 ^ divisor > 0) ?-1 : 1; long ans = 0; long end = Math.abs((long)dividend); long sor = Math.abs((long)divisor); // 实现除法的核心 while(end >= sor) { long temp = sor; long power = 1; while((temp << 1) < end) { power <<= 1; temp <<= 1; } ans += power; end -= temp; } return (int)(sign * ans); }}
0 0
- leetcode 29: Divide Two Integers
- LeetCode(29)Divide Two Integers
- [leetcode 29] Divide Two Integers
- [leetcode] 29 Divide Two Integers
- leetcode 29 Divide Two Integers
- Leetcode 29 Divide Two Integers
- LeetCode 29 - Divide Two Integers
- leetcode 29 -- Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29: Divide Two Integers
- Leetcode#29 Divide Two Integers
- LeetCode(29)Divide Two Integers
- LeetCode-29 Divide Two Integers
- Leetcode#29||Divide Two Integers
- leetcode-29 Divide Two Integers
- leetcode 29:Divide Two Integers
- leetcode 29:Divide Two Integers
- LeetCode 29: Divide Two Integers
- Android多线程下载文件
- 国外程序员整理的C++ 资源大全
- mdadm使用详解及RAID 5简单分析
- 手机号码归属地查询api接口
- 通过URL获取数据
- leetcode-29 Divide Two Integers
- C++ o matching function for call to 'transform...错误
- jdbc1.0、jdbc2.0、jdbc3.0、jdbc4.0的区别
- 一个监听器(Listener)实现多个按钮的onclick监听
- 使用Popen时报错:OSError: [Errno 2] No such file or directory
- java笔记--java IO流
- linux下如何实验硬raid5
- HDU 1079 Calendar Game (日期博弈,真是日历都快被我走遍了...)
- Palette状态栏颜色提取,写的不错就分享了