网站开发 与 网页设计的区别,网站建设犀牛云,开公司的流程,西安外贸网站开发文章目录1. 题目2. 解题2.1 哈希查找2.2 位运算1. 题目
给你三个整数数组 nums1、nums2 和 nums3 #xff0c;请你构造并返回一个 不同 数组#xff0c;且由 至少 在 两个 数组中出现的所有值组成。 数组中的元素可以按 任意 顺序排列。
示例 1#xff1a;
输入#xff1…
文章目录1. 题目2. 解题2.1 哈希查找2.2 位运算1. 题目
给你三个整数数组 nums1、nums2 和 nums3 请你构造并返回一个 不同 数组且由 至少 在 两个 数组中出现的所有值组成。 数组中的元素可以按 任意 顺序排列。
示例 1
输入nums1 [1,1,3,2], nums2 [2,3], nums3 [3]
输出[3,2]
解释至少在两个数组中出现的所有值为
- 3 在全部三个数组中都出现过。
- 2 在数组 nums1 和 nums2 中出现过。示例 2
输入nums1 [3,1], nums2 [2,3], nums3 [1,2]
输出[2,3,1]
解释至少在两个数组中出现的所有值为
- 2 在数组 nums2 和 nums3 中出现过。
- 3 在数组 nums1 和 nums2 中出现过。
- 1 在数组 nums1 和 nums3 中出现过。示例 3
输入nums1 [1,2,2], nums2 [4,3,3], nums3 [5]
输出[]
解释不存在至少在两个数组中出现的值。提示
1 nums1.length, nums2.length, nums3.length 100
1 nums1[i], nums2[j], nums3[k] 100来源力扣LeetCode 链接https://leetcode-cn.com/problems/two-out-of-three 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
2.1 哈希查找
class Solution {
public:vectorint twoOutOfThree(vectorint nums1, vectorint nums2, vectorint nums3) {unordered_setint s1(nums1.begin(), nums1.end()), s2(nums2.begin(), nums2.end()), s3(nums3.begin(), nums3.end());unordered_setint ans;for(auto n : nums1){if(s2.find(n)!s2.end() || s3.find(n)!s3.end())ans.insert(n);}for(auto n : nums2){if(s1.find(n)!s1.end() || s3.find(n)!s3.end())ans.insert(n);}return vectorint (ans.begin(), ans.end());}
};20 ms 26.5 MB C
2.2 位运算
用3个二进制位表示每个数在三个数组里的状态是否存在检查状态的二进制值是否有2个以上的1
class Solution {
public:vectorint twoOutOfThree(vectorint nums1, vectorint nums2, vectorint nums3) {vectorint ans, state(101);for(auto n : nums1)state[n] | 1;for(auto n : nums2)state[n] | 2;for(auto n : nums3)state[n] | 4;for(int i 1; i 101; i){if(state[i]3 || state[i]6 || state[i]5 || state[i]7)ans.push_back(i);}return ans;}
};8 ms 24.5 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步