虾皮笔试 虾皮笔试题 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多种语言版本,持续更新中。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务