欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网上遇到的面试题

程序员文章站 2022-06-12 21:05:44
...
题目:
写一个方法,要求参数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;
	}
相关标签: 面试 J# F#