网上遇到的面试题
程序员文章站
2022-06-12 21:05:44
...
题目:
写一个方法,要求参数int类型,如:传入一个12345,返回结果54321。
面试的时候遇到这个题,还有个要求,是方法体内的代码不能超过8行,而且还要用递归。
题目:
给定一个有序数组,统计其中不重复的绝对值的个数。(这个数组可能很长)
例如 int[] A = new int[]{-5, -3, -1, 0, 3, 6}; 不重复的绝对值有 5,3,-1,0, 6。 所以结果为5。
题目:
有三个int, a, b, k . 其中 0<=a<=b, k>0. 统计a ,b 之间能被k整除的数的个数(含 a,b )。
例如a =6 , b = 11, k =2, 结果应该为3, 因为 6,8, 10 三个数能被2整除。
写一个方法,要求参数int类型,如:传入一个12345,返回结果54321。
面试的时候遇到这个题,还有个要求,是方法体内的代码不能超过8行,而且还要用递归。
public static void main(String[] args) { System.out.println(f(12345, 0)); } public static int f(int i, int j) { return i < 10 ? f(i / 10, (i % 10 + j) * 10) : i + j; }
题目:
给定一个有序数组,统计其中不重复的绝对值的个数。(这个数组可能很长)
例如 int[] A = new int[]{-5, -3, -1, 0, 3, 6}; 不重复的绝对值有 5,3,-1,0, 6。 所以结果为5。
public static void main(String[] args) { int arr[] = new int[] { -20, -18, -16, -4, -1, 1,5, 8, 9, 18, 20}; System.out.println(getCount(arr)); } public static int getCount(int[] arr) { int length = arr.length; int count = getIndex(arr, 0, length, 0) + 1;// 得到<=0的数据个数 if (count == 1 || count == length) return arr.length; int i = count; // 得到第一个>0的数的数组下标 while (i < length) { if (arr[i] + arr[0] > 0) return count + length-i; if (arr[getIndex(arr, 0, count, -arr[i])] + arr[i] != 0) { count++; } i++; } return count; } /** * 获得数组arr中最后一个数据小于等于k的数组下标 * * @param arr * @param i * 左指针 * @param j * 右指针 * @param k * 边界 * @return */ public static int getIndex(int[] arr, int i, int j, int k) { while (i != j - 1) { int x = (i + j) / 2; if (arr[x] > k) j = x; else i = x; } return i; }
题目:
有三个int, a, b, k . 其中 0<=a<=b, k>0. 统计a ,b 之间能被k整除的数的个数(含 a,b )。
例如a =6 , b = 11, k =2, 结果应该为3, 因为 6,8, 10 三个数能被2整除。
public static void main(String[] args) { System.out.println(f(0, 9, 3)); } public static int f(int a, int b, int k) { return a%k==0?(a % k + b - a) / k + 1:(a % k + b - a) / k; }
上一篇: Ubuntu使用rsync
下一篇: 冷的掉渣的笑话