Intersection of Two Arrays II

本文针对LeetCode中的一道数组交集问题进行了详细的解答,通过对比两个输入数组,找到它们之间的公共元素并记录出现次数。采用排序和迭代的方式,提高了查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Leetcode题目来源

Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].

Note:
Each element in the result should appear as many times as it shows in both arrays.
The result can be in any order.

这道题我的办法比较实在,就是利用两个数组进行比较,然后将第一个数组作为参照,第二个数组的某个元素如果在第一个数组能够找到,就将第二个数组的该元素删除,并放在results中,避免已经找到了该元素但还在接下来的操作中进行比较,这样会造成重复,代码如下:

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
       vector<int>results;
        if(!nums1.empty() && !nums2.empty()){
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
        for(int i = 0; i < nums1.size(); i++){
            for(vector<int>::iterator j =nums2.begin(); j!=nums2.end(); j++){
                if(nums1[i] == *j){
                    results.push_back(nums1[i]);
                    j = nums2.erase(j);
                    break;
                }
            }
        }

    }
     return results;  
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值