2023 微众银行笔试题 0913
笔试时间:2023年9月13日 秋招
第一题
题目:挑选
小丽有一串有n个珠子的漂亮手链,其上的珠子颜色(用整数代表)从左到右分别为a1 a2...an。小丽觉得其中反复出现相同颜色混杂其中是不美观的。小丽想将其中重复颜色的珠子去一下重,只保留最右边的那一颗,其余珠子相对位置保持不变。因为珠子实在太多了,请你帮帮小丽。
输入描述
第一行1个整数n,表示珠子数量。
第二行n个整数a1 a2...an,表示珠子颜色。
对于100%的数据,1<=n<=50000,1<=ai<=n
输出描述
输出一行若干个整数表示去重后的珠子颜色。
样例输入
8
1 2 1 3 4 2 4 4
样例输出
1 3 2 4
说明
第1颗珠子因为第3颗珠子是相同额色而被去除
第2颗珠子因为第6颗珠子是相同颜色而被去除
第5颗珠子因为第8颗珠子是相同颜色而被去除
第7颗珠子因为第8颗珠子是相同额色而被去除
参考题解
一个set、一个list,从后往前遍历,查询set,如果不存在,则放进set,反之放进list。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <vector> #include <unordered_set> std::vector<int> findUniqueElements(int numbers[], int n) { std::vector<int> uniqueList; std::unordered_set<int> uniqueSet; for (int i = n - 1; i >= 0; i--) { int currentNumber = numbers[i]; if (uniqueSet.find(currentNumber) == uniqueSet.end()) { uniqueList.push_back(currentNumber); uniqueSet.insert(currentNumber); } } return uniqueList; } int main() { int n; std::cin >> n; int numbers[n]; for (int i = 0; i < n; i++) { std::cin >> numbers[i]; } std::vector<int> uniqueList = findUniqueElements(numbers, n); for (int i = uniqueList.size() - 1; i >= 0; i--) { std::cout << uniqueList[i] << " "; } return 0; }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.*; class UniqueElements { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] numbers = new int[n]; // Read input numbers for (int i = 0; i < n; i++) { numbers[i] = scanner.nextInt(); } List<Integer> uniqueList = findUniqueElements(numbers); // Print unique elements in reverse order for (int i = uniqueList.size() - 1; i >= 0; i--) { System.out.print(uniqueList.get(i) + " "); } } public static List<Integer> findUniqueElements(int[] numbers) { List<Integer> uniqueList = new ArrayList<>(); Set<Integer> uniqueSet = new HashSet<>(); // Iterate through the array in reverse order for (int i = numbers.length - 1; i >= 0; i--) { int currentNumber = numbers[i]; if (!uniqueSet.contains(currentNumber)) { uniqueList.add(currentNumber); uniqueSet.add(currentNumber); } } return uniqueList; } }
Python:[此代码未进行大量数据的测试,仅供参考]
def find_unique_elements(numbers): unique_list = [] unique_set = set() for number in reversed(numbers): if number not in unique_set: unique_list.append(number) unique_set.add(number) return unique_list def main(): n = int(input()) numbers = list(map(int, input().split())) unique_list = find_unique_elements(numbers) for number in reversed(unique_list): print(number, end=" ") if __name__ == "__main__": main()
第二题
题目:随机播放器
喜欢听歌的小明觉得系统的随机播放总是不能让他满
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023 秋招笔试题汇总解析 文章被收录于专栏
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。