求2个有序数组的交集

利用合并排序的思想

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++;
			}
		}
	}


阅读更多
个人分类: 算法面试题
上一篇两个有序数组合并成一个有序数组
下一篇dubbo 同步调用
想对作者说点什么? 我来说一句

两个有序数组交集,C++

2010年11月01日 692B 下载

没有更多推荐了,返回首页

关闭
关闭