NC313. 两个数组的交集
描述
示例1
输入:
[1,2 ],[2,2,2,2]
输出:
[2]
说明:
两个数组的公共元素只有2示例2
输入:
[1,2,3],[8,2,2,3,8]
输出:
[2,3]
说明:
两个数组的公共元素为2和3,返回[3,2]也是一个正确的答案C++ 解法, 执行用时: 3ms, 内存消耗: 452KB, 提交时间: 2022-03-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums1 int整型vector * @param nums2 int整型vector * @return int整型vector */ vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector<bool> marked(1001, false); int len1 = nums1.size(); int len2 = nums2.size(); vector<int> res; for (int i = 0; i < len1; ++i) { marked[nums1[i]] = true; } for (int i = 0; i < len2; ++i) { if (marked[nums2[i]]) { res.push_back(nums2[i]); marked[nums2[i]] = false; } } return res; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 468KB, 提交时间: 2022-08-04
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums1 int整型vector * @param nums2 int整型vector * @return int整型vector */ vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { // write code here unordered_map<int,int>cnt; for(auto x:nums1) { cnt[x]++; } vector<int>ans; for(auto x:nums2) { if(cnt[x]>0) { ans.push_back(x); cnt[x]=0; } } return ans; } };
C 解法, 执行用时: 3ms, 内存消耗: 476KB, 提交时间: 2022-04-02
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums1 int整型一维数组 * @param nums1Len int nums1数组长度 * @param nums2 int整型一维数组 * @param nums2Len int nums2数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 * * C语言声明定义全局变量请加上static,防止重复定义 */ int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } int* intersection(int* nums1, int nums1Len, int* nums2, int nums2Len, int* returnSize ) { // write code here int *ans = (int *)malloc(sizeof(int) * 1000); int dp[1001] = {0}; *returnSize = 0; //qsort(nums1, nums1Len, sizeof(int), cmp); //qsort(nums2, nums2Len, sizeof(int), cmp); for (int i = 0; i < nums1Len; ++i) { dp[nums1[i]]++; } for (int j = 0; j < nums2Len; ++j) { if (dp[nums2[j]] > 0) { ans[(*returnSize)++] = nums2[j]; dp[nums2[j]] = 0; } } return ans; }
C 解法, 执行用时: 3ms, 内存消耗: 480KB, 提交时间: 2022-06-19
int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; } int* intersection(int* nums1, int nums1Len, int* nums2, int nums2Len, int* returnSize ) { int* z = (int*)malloc(sizeof(int) * 1000); int k[1001] = {0}; *returnSize = 0; for (int i = 0; i < nums1Len; ++i) { k[nums1[i]]++; } for (int j = 0; j < nums2Len; ++j) { if (k[nums2[j]] > 0) { z[(*returnSize)++] = nums2[j]; k[nums2[j]] = 0; } } return z; }
C++ 解法, 执行用时: 3ms, 内存消耗: 488KB, 提交时间: 2022-03-05
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums1 int整型vector * @param nums2 int整型vector * @return int整型vector */ vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { // write code here int n=nums1.size(); int n2=nums2.size(); vector<int>jiao; unordered_map<int, int>hashmap; for(int i=0;i<n;i++){ hashmap[nums1[i]]++; } for(int i=0;i<n2;i++){ if(hashmap[nums2[i]]!=0){ jiao.push_back(nums2[i]); hashmap[nums2[i]]=0; } } return jiao; } };