LeetCode 29 两数相除
Posted Starzkg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 29 两数相除相关的知识,希望对你有一定的参考价值。
https://leetcode-cn.com/problems/divide-two-integers/submissions/
解决方案
class Solution
public int divide(int dividend, int divisor)
// 考虑被除数为最小值的情况
if (dividend == Integer.MIN_VALUE)
if (divisor == 1)
return Integer.MIN_VALUE;
if (divisor == -1)
return Integer.MAX_VALUE;
// 考虑除数为最小值的情况
if (divisor == Integer.MIN_VALUE)
return dividend == Integer.MIN_VALUE ? 1 : 0;
// 考虑被除数为 0 的情况
if (dividend == 0)
return 0;
// 一般情况,使用类二分查找
// 将所有的正数取相反数,这样就只需要考虑一种情况
boolean rev = false;
if (dividend > 0)
dividend = -dividend;
rev = !rev;
if (divisor > 0)
divisor = -divisor;
rev = !rev;
ans=0;
solve(dividend,divisor,0);
return rev ? -ans : ans;
int ans = 0;
public int solve(int dividend,int divisor,int candidate)
int temp = divisor<<candidate;
if(temp<dividend)
return dividend;
if(temp>=Integer.MIN_VALUE>>1)
dividend = solve(dividend, divisor, candidate + 1);
if(temp>=dividend)
ans += 1 << candidate;
dividend -= temp;
return dividend;
以上是关于LeetCode 29 两数相除的主要内容,如果未能解决你的问题,请参考以下文章