Java学习-2
今天稍微刷了几道算法题,整理便于之后复习.
1.计算小于n的所有质数的个数。
class Solution {
public int countPrimes(int n) {
boolean[] arr=new boolean[n];
int cnt=0;
for(int i=2;i<n;i++){
if(arr[i])continue;
cnt+=1;
for(int j=i;j<n;j+=i){
arr[j]=true;
}
}
return cnt;
}
}
2.如果idx+1不是3/5的倍数,列表对应位置设置为idx+1,如果是3的倍数,对应位置赋值为“Fizz”,5的倍数"Buzz",15的倍数“FizzBuzz”。
class Solution {
public List<String> fizzBuzz(int n) {
List<String> res=new ArrayList<>(n);
for(int i=1;i<=n;i++){
res.add(i+"");
}
for(int i=2;i<n;i+=3){
res.set(i,"Fizz");
}
for(int i=4;i<n;i+=5){
res.set(i,"Buzz");
}
for(int i=14;i<n;i+=15){
res.set(i,"FizzBuzz");
}
return res;
}
}
3.判断n是不是3的m次幂。
class Solution {
public boolean isPowerOfThree(int n) {
if(n>1){
while(n%3==0){
n/=3;
}
}
return n==1;
}
}