思路
首先判断商的正负,然后便可将两个数都转换为整数,方便商的计算,商的计算用被除数不断减去除数即可
解题过程
注意:整型的负值比正值多一个数,这种特殊情况需要需要单独讨论,同时当除数为1时,很可能会超时也需要单独讨论
Code
class Solution {
public int divide(int dividend, int divisor) {
boolean flag=true;
if((dividend<0&&divisor>0)||(dividend>0&&divisor<0)) flag=false;
int ans=0;
long tdividend=Math.abs((long)dividend);
long tdivisor=Math.abs((long)divisor);
if(tdividend==-1*(long)Integer.MIN_VALUE&&tdivisor==1&&flag) return Integer.MAX_VALUE;
if(tdividend==-1*(long)Integer.MIN_VALUE&&tdivisor==1&&!flag) return Integer.MIN_VALUE;
if(tdividend==(long)Integer.MAX_VALUE&&tdivisor==1&&flag) return Integer.MAX_VALUE;
if(tdividend==(long)Integer.MAX_VALUE&&tdivisor==1&&!flag) return -Integer.MAX_VALUE;
while(tdividend>=tdivisor){
ans++;
tdividend=tdividend-tdivisor;
}
if(flag) return ans;
else return -1*ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/divide-two-integers/solutions/2929015/liang-shu-xiang-chu-by-ashi-jian-chong-d-81tj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接: https://blog.csdn.net/qq_53568730/article/details/142497422