跳至主要內容

其他程序设计

HeChuangJun约 297 字小于 1 分钟

计算n的阶乘的末尾有几个0√

在线计算阶乘的地址http://www.99cankao.com/statistics/factorial-calculator.phpopen in new window
尾部的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();