文章目录
一、001. 整数除法
- 二分法+快速乘法
https://leetcode.cn/problems/divide-two-integers/solution/shua-chuan-lc-er-fen-bei-zeng-cheng-fa-j-m73b/
public int divide(int dividend, int divisor) {
long x=dividend;
long y=divisor;
boolean isNeg = false;
if ((x > 0 && y < 0) || (x < 0 && y > 0)) isNeg = true;
if (x < 0) x = -x;
if (y < 0) y = -y;
long l=0,r=x+1;//左右边界0到x
while(l<r){//左闭右开
long mid = (l+r)/2;
if(mul(mid,y)>x){
r = mid;
} else {
l = mid+1;
}
}
// long ans = isNeg ? -(l-1L) : (l-1L);
long ans = isNeg ? -(l-1L) : (l-1L);
if (ans > Integer.MAX_VALUE || ans < Integer.MIN_VALUE) return Integer.MAX_VALUE;
return (int)ans;
}
long mul(long a,long b){
long ans = 0;
while(b>0){//执行b次
if((b&1)==1){
ans += a;
}
a +=a;
b>>=1;
}
return ans;
}
20分钟
二、002.二进制加法
-
自己看到题目的第一想法
-
看完题解之后的想法
-
自己实现过程中遇到的问题总结
46分钟
三、前 n 个数字二进制中 1 的个数
-
自己看到题目的第一想法
-
看完题解之后的想法
-
自己实现过程中遇到的问题总结
29分钟
四、27.移除元素
-
自己看到题目的第一想法
-
看完题解之后的想法
-
自己实现过程中遇到的问题总结