2023 微众银行笔试题 0903
笔试时间:2023年9月3日 秋招
第一题
题目:切糖果
小美想要买糖果店的一根长长的糖果,糖果店顾客可以从中选取一个位置然后老板会在那切断,糖果前端到那个切断位置的糖果就会出售给这位顾客。这个糖果其实不同段有着不同的口味,小美希望她选出来的糖果中各个段有着不同的口味,在这基础上希望能选出尽可能长的糖果。小美想知道她能买到最长多长的糖果,请你帮帮她。
输入描述
第一行1个整数n,表示糖果的长度。
第二行n个整数a1a2...an,其中ai表示从糖果前端开始第i段的口味,每段均1为单位长度。
对于100%的数据,1<=n<=50000,1<=ai<=50000
输出描述
输出一行一个整数表示能买到的糖果的最长长度,且其中不包含相同口味。
样例输入
5
1 2 3 3 4
样例输出
3
提示
如果我们买长度为4的糖果,包含的口味为[1,2,3,3],存在了重复。
而长度为3时,包含的口味为[1,2,3],不存在重复。因此长度3为最长的不存在重复口味糖果长度。
参考题解
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); } Map<Integer, Integer> mp = new HashMap<>(); int i = 0; for (; i < n; i++) { mp.put(arr[i], mp.getOrDefault(arr[i], 0) + 1); if (mp.get(arr[i]) >= 2) { break; } } System.out.println(i); } }
Python:[此代码未进行大量数据的测试,仅供参考]
n = int(input()) arr = list(map(int, input().split())) mp = {} i = 0 for num in arr: if num in mp: mp[num] += 1 else: mp[num] = 1 if mp[num] >= 2: break i += 1 print(i)
第二题
题目:酷
酷酷的小明准备和小伙伴们展示他捏出来的超酷的橡皮泥士兵。在展示之前,小明发现有些橡皮泥士兵大小十分相似甚至相同,这让小明感觉不是很酷,因为小明想要他的橡皮泥作品都有自己的风格,即使是大小也要有区别。小明的n个橡皮泥士兵的大小分别为a1,a2...an,小明可以通过给某个士兵加一单位皮泥来使得其大小增加一单位。小明想知道如果他想要让所有的橡皮泥士兵大小都不相同,至少需要一共加多少单位橡皮泥。
输入描述
第一行1个整数n,表示小明的橡皮泥士兵数量;
第二行n个整数a1a2...an,分别表示小明的橡皮泥士兵的大小。
对于100%的数据,1<=n<=50000,1<=ai<=100000
输出描述
输出一行一个整数表示总共至少加多少单位的橡皮泥.
样例输入
5
1 1 2 3 3
样例输出
5
提示
我们给一个大小为1的橡皮泥士兵增加4单位像皮泥,大小变为5;
再给一个大小为3的橡皮泥士兵增加1单位像皮泥,大小变为4。
此时橡皮泥士兵们的大小分别为1、2、3、4、5,没有两个橡皮泥士兵拥有相同大小了。
可以证明没有更优方案。
参考题解
将数组排序,进行遍历,根据泥士兵大小是否相等分别处理
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Arrays; import java.util.Scanner; public class Main { public static int minn(int[] nums) { Arrays.sort(nums); int ans = 0, taken = 0; for (int i = 1; i < nums.length; ++i) { if (nums
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。