跟着博主一起刷题
这里使用的是题库:
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
这道题主要考察我们对&&的短路特性的了解
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. 不用加减乘除做加法
这道题明显利用位运算,思路如下:
异或运算^ :
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;}
}