没事就去刷刷编程题

最近发现一个联系编程的好网站,没事的话,可以上去加强一下自己的算法基础,提高一下自己的编程能力,上面的题目很多,可以循序渐进的从基础再到难度较大的题目进行练习.

网站1:https://leetcode.com/problemset/all/

网站2:http://www.lintcode.com/zh-cn/

中午休息时间做了几道题目:

    /**
     * 两个数组合并排序
     * @param A
     * @param B
     * @return
     */
    public static int[] mergeSortedArray(int[] A, int[] B) {
        int len = A.length + B.length;
        int[] C = new int[len];
        System.arraycopy(A, 0, C, 0, A.length);
        System.arraycopy(B, 0, C, A.length, B.length);
        int temp;
        for(int i = 0; i < len; i++){
            for(int j = i; j > 0; j--){
                if(C[j] < C[j-1]){
                    temp = C[j];
                    C[j] = C[j-1];
                    C[j-1] = temp;
                }    
            }    
        }
        return C;        
    }
    
    /**
     * 在数组中找到第k大的元素
     * @param k
     * @param nums
     * @return
     */
    public static int kthLargestElement(int k, int[] nums) {
        int size = nums.length;
        int temp;
        for(int i = 0; i < size; i++){
            for(int j = i; j > 0; j--){
                if(nums[j] > nums[j-1]){
                    temp = nums[j];
                    nums[j] = nums[j-1];
                    nums[j-1] = temp;
                }    
            }    
        }
        for(int index=0; index<size;index++){
            System.out.print(nums[index]+",");
        }
        int resl = nums[k-1];
        return resl;
    }
    /**
     * 计算数字k在0到n中的出现的次数,k可能是0~9的一个值
     * @param k
     * @param n
     * @return
     */
    public static List<Integer> digitCounts(int k, int n) {
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 1; i <= n; i++){
            String str = String.valueOf(i);
            char[] c = str.toCharArray();
            for(int j=0;j < c.length; j++){
                int x = Integer.valueOf(String.valueOf(c[j]));
                if(k == x){
                    list.add(i);
                }
            }
        }
        return list;
    }
    
    
    
    /**
     * 计算一个数阶乘后尾部包含0的个数
     * @param n
     * @return
     */
    public static long trailingZeros(long n){        
        int count = 0;
        long reslt = jiechen(n);
        System.out.println(reslt);
        while((reslt % 10) == 0){
            reslt = reslt/10;
            count ++;
        }
        return count;
    }
    
    private static long jiechen(long n){
        long sum = 1;
        if(n < 0){
            return -1;
        }
        if(n <= 1){
            return 1;
        }
        for(long i = 1; i <= n; i++){
            sum *= i; 
        }
        return sum;
    }

 

posted @ 2017-11-10 13:47  疯狂的蜗牛仔  阅读(352)  评论(0编辑  收藏  举报