求2个有序数组的交集

原创 2015年07月06日 17:32:57

利用合并排序的思想

public void intersect2(int[] a, int[] b) {
		if (a[0] > b[b.length - 1] || b[0] > a[a.length - 1]) {
			return;
		}

		int i = 0, j = 0;
		int lastA = Integer.MIN_VALUE, lastB = Integer.MIN_VALUE; // 这个初始默认值可能问题,比如数组第一个值就是最小整数值,待改进
		while (i < (a.length - 1) && j < (b.length - 1)) {
			if (a[i] < b[j]) {
				lastA = a[i];
				i++;
			} else if (a[i] > b[j]) {
				lastB = b[j];
				j++;
			} else {
				if (a[i] != lastA && b[j] != lastB) {//这里为了避免重复的值
					System.out.print(a[i] + " ");
				}
				lastA = a[i];
				lastB = b[j];
				i++;
				j++;
			}
		}
	}


相关文章推荐

【恒生电子16年校招编程题】求两有序数组的交集并返回交集个数

上星期参加了恒生电子的笔试,来记录保存一下笔试编程题,以填充我枯竭的编程基础QAQ 题目大致意思:有两有序的数组aArray[] ,bArray[],已知他们的长度分别为aLength,bLength...

求无序数组的中位数(转载)

求无序数组的中位数 中位数即是排过序后的处于数组最中间的元素。 不考虑数组长度为偶数的情况。设集合元素个数为n。 简单的想了下: 思路1) 把无序数组排好序,取出中间的元素          ...

求多个有序数组的中位数

题目:求解多个有序数组的中位数 题目的意思是如果多个有序数组能在一起排序,则取位置为中间的数字,如果有奇数个数字则中位数只有一个;若为偶数个则有两个,一般取第一个,也称下中位。但不能把数组合...

求两个有序数组的中位数

求两个有序数组的中位数            如果有两个有序的数组,都是已经排好序的。那么求它们的中位数应该怎样求呢。如果采用对这两个数组进行排序的方法,最快的时间复杂度也要o(nlogn)的时间。...

求两个有序数组的第k小元素

转载自:http://xiaobaoqiu.github.io/blog/2014/05/30/k-th-smallest-element-in-the-union-of-two-sorted-arr...

【算法题】M个有序数组,求其中的第k个数 (2012-10-02 23:34:20)

首先是有人在微博上提出这个“GOOGLE面试题”: 1)有两个排好序的数组,求其中值 然后在面试中,碰到这样的题: 2)有两个排好序的数组,找到其中第k个数 以及扩展: 3)有M个排好序...

给定一个无序数组,求这组数在排序后相邻数间差的最大值

题目来源:https://oj.leetcode.com/problems/maximum-gap/ 题目大意:RT 这个题最差的方式是排序,当然时间复杂度是nlogn。 是否有n的方法呢? ...
  • jpbirdy
  • jpbirdy
  • 2015年01月16日 17:36
  • 1551

求两个有序数组的中位数之非递归实现

人禾 int find_median(int *a, int lengtha, int *b, int lengthb) { assert(lengtha > 0); assert(...

两个有序数组,求有序合并以后的第K个元素

13.给定长度分别是m和n的降序有序数组,要求找到将两个数组也按照降序合并的第K个元素。算法的时间复杂度是O(K) solution: 如果通过两数组合并的方法,也就是使用两个指针分别遍历2数组,依次...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求2个有序数组的交集
举报原因:
原因补充:

(最多只允许输入30个字)