其他程序设计
约 297 字小于 1 分钟
计算n的阶乘的末尾有几个0√
在线计算阶乘的地址http://www.99cankao.com/statistics/factorial-calculator.php
尾部的0一共有多少个,就要看这个数包含多少个5的因子
public static int SelectZero(int n){
int count=0;
while(n!=0){
count+=n/5;
n=n/5;
}
return count;
}
1亿个int类型数字,如何找出重复数字?√
public class Test{
public static void main(String[] args){
long time=new Date().getTime();
int[] arr=new int[100000000];//1亿长度
for(int i=0;i<arr.length;i++){
arr[i]=i+1;
}
arr[99999999]=2020;
int min=arr[0];
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]<min)
min=arr[i];
if(arr[i]>max)
max=arr[i];
}
byte[] bucket=new byte[(max-min)/8+1];
for(int i=0;i<arr.length;i++){
int num=arr[i];
int j=(num-min)/8;
int k=(num-min)%8;
if(((bucket[j]>>k)&1)>0){//重复了
System.out.println("Number of repeats:"+num);
break;
}else{
bucket[j]|=(1<<k);
}
}
long time2=new Date().getTime();
System.out.println("millisecond:"+(time2-time));
}
}
求表达式1-2+3-4+...+m的实现方法
public int fun(int m){
int sum=0;
for(int i=1;i<m+1;i++){
if(i%2==0){
sum=sum-i;
}else{
sum=sum+i;
}
}
return sum;
}
数组去重
Set set = new HashSet();
for(int i=0;i<arr.length;i++){
set.add(arr[i]);
}
return set.toArray();