leetcode 350. Intersection of Two Arrays II
2016-07-16 10:47
323 查看
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].
首先想到的思路是直接遍历数组。这个时间复杂度是 O(mn),显然太高了
然后就想到先sort 再遍历数组。 时间复杂度 是O(mlgm + nlgn + m + n)
最后看下题目说万一 n 很大要在disk 上读取,所以想到了先把m load 进来存,然后用哈希,这样时间复杂度就是 O(n)
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].
首先想到的思路是直接遍历数组。这个时间复杂度是 O(mn),显然太高了
然后就想到先sort 再遍历数组。 时间复杂度 是O(mlgm + nlgn + m + n)
最后看下题目说万一 n 很大要在disk 上读取,所以想到了先把m load 进来存,然后用哈希,这样时间复杂度就是 O(n)
class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> intersection; int m = nums1.size(); int n = nums2.size(); if (m == 0 || n == 0) return intersection; unordered_map<int,int> hash; for (int i = 0; i < m; i++) { unordered_map<int, int>::iterator has = hash.find(nums1[i]); if (has == hash.end()) hash[nums1[i]] = 1; else has -> second += 1; } for (int i = 0; i < n; i++) { unordered_map<int,int>::iterator has = hash.find(nums2[i]); if (has != hash.end() && has -> second > 0) { has -> second -= 1; intersection.push_back(has -> first); } } return intersection; } };
class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> intersection; if(nums1.empty() || nums2.empty()) { return intersection; } sort(nums1.begin(), nums1.end()); sort(nums2.begin(), nums2.end()); int m = nums1.size(); int n = nums2.size(); int i = 0,j = 0; while(i < m && j < n) { if(nums1[i] < nums2[j]) { i++; } else if(nums1[i] > nums2[j]) { j++; } else { intersection.push_back(nums1[i]); i++; j++; } } return intersection; } };
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用