对笔试使用《剑指offer》吧(第十天)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
跟着博主一起刷题
这里使用的是题库
https://leetcode.cn/problem-list/xb9nqhhg/?page=1
目录
剑指 Offer 62. 圆圈中最后剩下的数字
class Solution {
public int lastRemaining(int n, int m) {
int ret=0;
for(int i=2;i<=n;i++){
ret=(ret+m)%i;
}
return ret;
}
}
剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n
这道题主要考察我们对&&的短路特性的了解
class Solution {
private int sum=0;
public int sumNums(int n) {
boolean flag=n>0&&((sum+=n)>0);
boolean tmp=flag&&sumNums(n-1)>0;
return sum;
}
}
剑指 Offer 65. 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法
这道题明显利用位运算思路如下
异或运算^
a^b 又可称无进位加法意思时如果a+b存在进位操作直接抹去,这里的进位指的是二进制
与运算&1&1=1可以发现正好&运算可以来记录进位。
class Solution {
public int add(int a, int b) {
int xor=a^b;
int and=a&b;
while(and!=0){
int tmp=xor;
xor=xor^(and<<1);
and=tmp&(and<<1);
}
return xor;
}
}