虾皮笔试 虾皮笔试题 1022
笔试时间:2024年10月22 秋招
历史笔试传送门:2023秋招笔试合集
第一题
题目
给定两个int类型的数组 nums1和nums2,请你找出这两个数组的交集,并返回一个数组,其中每个元素是这两个数组的交集中的元素。返回的结果按照从小到大排序,并且不能包含重复元素。
时间限制:1000ms内存限制:256.00mb
样例输入
[1, 2, 2, 1], [2, 3, 2]
样例输出
2
参考题解
使用hash表记录一个数组的元素,然后遍历另一个数组只取交集元素即可。最后将答案数组排序。
C++:[此代码未进行大量数据的测试,仅供参考]
#include<iostream> #include<vector> #include<unordered_set> using namespace std; vector<int> intersection(vector<int> &nums1, vector<int> &nums2) { unordered_set<int> st1; for (int x : nums1) { st1.insert(x); } unordered_set<int> st2; vector<int> ans; for (int x : nums2) { if (!st2.count(x) && st1.count(x)) { st2.insert(x); ans.push_back(x); } } sort(ans.begin(), ans.end()); return ans; }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Collections; public class Solution { public List<Integer> intersection(int[] nums1, int[] nums2) { HashSet<Integer> st1 = new HashSet<>(); for (int x : nums1) { st1.add(x); } HashSet<Integer> st2 = new HashSet<>(); List<Integer> ans = new ArrayList<>(); for (int x : nums2) { if (!st2.contains(x) && st1.contains(x)) { st2.add(x); ans.add(x); } } Collections.sort(ans); return ans;
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024 BAT笔试合集 文章被收录于专栏
持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。