Day6 两个数组的交集

力扣题目链接(opens new window)

题意:给定两个数组,编写一个函数来计算它们的交集。

349. 两个数组的交集

说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。

 思路1:使用unordered_set

class Solution1 {
public:
	vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
		//创建一个方式最终结果的无须的set数组,他会自动的进行去重操作;
		unordered_set<int> result_set;
		//将vector类型的nums1放在nums_set中(即:将vector转换为unordered_set数组)
		unordered_set<int> nums_set(nums1.begin(),nums1.end());
		for (int num : nums2) {
			//遍历nums2,并在原来的nums1中逐一查找元素,如果查找到,就放入结果数组中:
			if (nums_set.find(num) != nums_set.end()) {
			
			
				result_set.insert(num);
			}
		}
		//最后返回一个匿名的vector数组:
		return vector<int>(result_set.begin(), result_set.end());

	}


};

 思路2:使用数组

class Solution3 {
public:
	vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
		// 存放结果,之所以用set是为了给结果集去重
		unordered_set<int> result_set;
		int hash[1001] = { 0 };//默认数组元素均为0;
		//将nums1中的数组做一个hash映射:
		// nums1中出现的字母在hash数组中做记录
		for (int i = 0; i < nums1.size();i++) {
		
		
			hash[nums1[i]] = 1;
		}
		//然后再去nums2中去查找
		for (int i = 0; i < nums2.size(); i++) {
		
			//如果num2中对应位置的hash还是1,那就说明查找到了;
			if (hash[nums2[i]] == 1) {
			
				result_set.insert(nums2[i]);

			}
		}
		//返回一个匿名的vector数组;
		return vector<int>(result_set.begin(), result_set.end());
	}
};

 思路3:暴力解法

class Solution1 {
public:
	vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {

		set<int> s1;
		for (int i = 0; i < nums1.size(); i++) {

			for (int j = 0; j < nums2.size(); j++) {
				//暴力解法,利用两层for循环,遇到相同的数字,就插入set中,set会自动进行去重;
				if (nums1[i] == nums2[j]) {
					s1.insert(nums1[i]);
				}
			}

		}
		// 使用构造函数调用将set转换为vector,直接return一个匿名的vector对象;
		return vector<int> (s1.begin(), s1.end());
	}
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值