美团历年算法真题合集
2024.09.07 1. 第一题 小美有一个长度为n的数组,她每次操作会执行如下:选定一个ai,把这个数加上一个任意的x(x > 0),花费的代价为ai + x。现在小美想要把整个数组变成全部奇数或者全部偶数的最小代价是多少? 输入描述 第一行输入一个整数n,代表数组的长度 第二行输入n个数 输出描述 输出最小花费 样例输入 3 1 2 3 样例输出 3 答案 要么统一把奇数编程偶数,要么统一把偶数变成奇数,只需要计算两种情况的最小值就行 对变成奇数和变成偶数的两种情况分别进行计算。 import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); List<Integer> a = new ArrayList<>(); for (int i = 0; i < n; i++) { a.add(scanner.nextInt()); } int oddCost = 0, evenCost = 0; for (int i = 0; i < n; i++) { if (a.get(i) % 2 == 1) { evenCost += a.get(i) + 1; } else { oddCost += a.get(i) + 1; } } System.out.println(Math.min(oddCost, evenCost)); } } 2. 第二题 对于给定的由n个节点构成,根结点为1的有根树中,我们定义节点u和v是相似的节点,当且仅当节点u的子节点数量与节点v的子节点数量相等。输出相似节点的对数。 ...