关闭

求2个有序数组的交集

296人阅读 评论(0) 收藏 举报
分类:

利用合并排序的思想

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45275次
    • 积分:751
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:59篇
    • 译文:3篇
    • 评论:0条
    文章分类