2020/04/02美團客戶端筆試題目記錄

5個編程題目

題目1:刪除最少數使得差值小於sub

示例:
輸入:
5 2
2 1 3 2 5
輸出:
1

代碼:

import java.util.Arrays;
import java.util.Scanner;
public class Main { 
	public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
    int n,sub;
   while(scanner.hasNext()) {
	   n = scanner.nextInt();
	   sub = scanner.nextInt();
	   int[] nums = new int[n];
	   for (int i = 0; i < nums.length; i++) {
		nums[i] = scanner.nextInt();
	}
	    Arrays.sort(nums);
    	System.out.println(getMin(nums, sub));
	}    
}
	//01
	public static int getMin(int[] nums,int sub) {
		int ans = 0;
		int n=nums.length;
		if(n == 1) return 0;
		int res = nums[n-1] - nums[0];
		if(res >sub) {
			int[] nums1 = Arrays.copyOfRange(nums, 0, n-2);
			int[] nums2 = Arrays.copyOfRange(nums, 1, n-1);
			ans = 1+Math.min(getMin(nums1, sub), getMin(nums2, sub));
		}
		return ans;
	}
}

通過18%

題目2:房間遊戲,有n個房間,m點法力值,依次循環經過這n個房間,在每個房間留下足跡,需要消耗一定得法力值,請求出最多能在幾個房間留下法力值(可循環重複在房間留下足跡)。

示例:
輸入:
4 10
1 3 5 2
輸出:
4

代碼:

import java.util.Scanner;
public class Main { 
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n,m;
		n = scanner.nextInt();
		m = scanner.nextInt();
		int[] fangjian = new int[n];
		int count = 0;
		int min = Integer.MAX_VALUE;
		int sum = 0;
		for(int i =0;i<n;i++) {
			fangjian[i] = scanner.nextInt();
			if(fangjian[i]<min)min = fangjian[i];
			sum +=fangjian[i];
			m -=fangjian[i];
			if(m>=0) {
				count++;
			}
			else {
				m +=fangjian[i];
			}
		}
		if(m == min)count++;
		if(m>min&&m<=sum) {
			for(int i =0;i<n;i++) {
			m -=fangjian[i];
			if(m>=0) {
				count++;
			}
			else {
				m +=fangjian[i];
			}
		}
		}
		if(m>sum) {
			count += (m/sum)*n;
			if(m%sum == min)count++;
			if(m%sum>min) {
				for(int i =0;i<n;i++) {
					m -=fangjian[i];
					if(m>=0) {
						count++;
					}
					else {
						m +=fangjian[i];
					}
				}
			}
		}

  	   System.out.println(count);
	}    
}

AC通過
還有一個位運算得題目,具體想不起來了。
其他題目沒時間做,也就更沒印象了,歡迎大佬補充,以及留下自己的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章