Finding intersection of two sorted arrays
2012-08-09 09:58
190 查看
1. 题目:找出两个有序数组的交集。
2. 解析:给定数组a和b,a的长度为m,b的长度为n
(1)最原始的方法,依次遍历a中每一个元素,并通过遍历b来判断a中元素是否在b中。时间复杂度O(m×n)
(2)改进的算法,在b中查找a的元素改为二分查找,时间复杂度为O(mlgn)
(3)因为a和b都是有序的,遍历a和b,并对a和b中的元素进行判断,如果a[i]<b[j] i++, 如果a[i]>b[j] j++, 如果a[i]==b[j] i++, j++。时间复杂度为O(m+n)
3. 分析:
(1)当m很小,n很大时,O(mlgn)二分法查找的效率高于线性查找的O(m+n),剩下的情况,线性查找效率比较高。
(2)当a和b中存在重复元素时,比如a={1,1,2,2,3},b={1,2,3}这时候使用(1)和(2)方法得到结果为:{1,1,2,2,3},使用(3)方法得到结果为:{1,2,3}。结果2更符合题目的要求。所以在有重复元素时,解法(3)更符合题目要求。
4. 代码:
View Code
5. 参考文章:
http://www.leetcode.com/2010/03/here-is-phone-screening-question-from.html
/article/7173846.html
2. 解析:给定数组a和b,a的长度为m,b的长度为n
(1)最原始的方法,依次遍历a中每一个元素,并通过遍历b来判断a中元素是否在b中。时间复杂度O(m×n)
(2)改进的算法,在b中查找a的元素改为二分查找,时间复杂度为O(mlgn)
(3)因为a和b都是有序的,遍历a和b,并对a和b中的元素进行判断,如果a[i]<b[j] i++, 如果a[i]>b[j] j++, 如果a[i]==b[j] i++, j++。时间复杂度为O(m+n)
3. 分析:
(1)当m很小,n很大时,O(mlgn)二分法查找的效率高于线性查找的O(m+n),剩下的情况,线性查找效率比较高。
(2)当a和b中存在重复元素时,比如a={1,1,2,2,3},b={1,2,3}这时候使用(1)和(2)方法得到结果为:{1,1,2,2,3},使用(3)方法得到结果为:{1,2,3}。结果2更符合题目的要求。所以在有重复元素时,解法(3)更符合题目要求。
4. 代码:
View Code
#include <iostream> #include <cassert> using namespace std; void arrayIntersection(int* a, int aLength, int* b, int bLength) { if (!a || !b) { return ; } int i=0; int j=0; while ((i<aLength) && (j<bLength)) { if (a[i]<b[j]) { i++; } else if (a[i]>b[j]) { j++; } else { cout<<a[i]<<" "; i++; j++; } } cout<<endl; } int main() { enum {aLength=5,bLength=7}; int a[aLength]={1,4,4,5,6}; int b[bLength]={4,5,6,7,9,10,11}; arrayIntersection(a,aLength,b,bLength); return 0; }
5. 参考文章:
http://www.leetcode.com/2010/03/here-is-phone-screening-question-from.html
/article/7173846.html
相关文章推荐
- Finding intersection of two sorted arrays
- Finding intersection of two sorted arrays
- find intersection of two sorted arrays
- Intersection of two sorted arrays
- leetcode——finding Median of Two Sorted Arrays题目分析
- Find intersection of two sorted arrays
- Intersection of Two Arrays
- [LeetCode] Intersection of Two Arrays II 两个数组相交之二
- leetcode_349 Intersection of Two Arrays
- leetcode python - Median of Two Sorted Arrays
- leetcode 4. Median of Two Sorted Arrays
- Leetcode-Median of Two Sorted Arrays (java)
- Median of Two Sorted Arrays
- median-of-two-sorted-arrays
- LeetCode 4 Median of Two Sorted Arrays
- Intersection of Two Arrays II
- Leetcode 4 Median of Two Sorted Arrays
- LeetCode-Median of Two Sorted Arrays,找出两个排好序的数组的中位数
- LeetCode.Problem 4 Median of Two Sorted Arrays
- LeetCode: Median of Two Sorted Arrays