最近发现一个联系编程的好网站,没事的话,可以上去加强一下自己的算法基础,提高一下自己的编程能力,上面的题目很多,可以循序渐进的从基础再到难度较大的题目进行练习.
网站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; }
时间: 2024-11-01 20:37:38