您的位置:首页 > 其它

有序数组求交集

2016-02-29 10:57 267 查看
14给出了我认为最简单的算法,不过其犯了一点点小错误,我修正了。

public static void test() {

int[] a = { 2, 3, 4, 4, 4, 4, 7, 8, 8, 8, 8, 9, 100, 130, 150, 160 };

int[] b = { 4, 6, 7, 7, 7, 7, 8, 8, 9, 10, 100, 130, 130, 140, 150 };

int i = 0, j = 0;

ArrayList<Integer> al = new ArrayList<Integer>();

while (i < a.length && (j < b.length)) {

if (a[i] < b[j])

i++;

else if (a[i] > b[j])

j++;

else {

al.add(a[i]); // 这里应该先加入,然后再加1

i++;

j++;

}

}

System.out.println(al);

}

运行结果为

[4, 7, 8, 8, 9, 100, 130, 150]

如果不允许重复,则使用TreeSet就行了。

TreeSet<Integer> al = new TreeSet<Integer>();

运行结果

[4, 7, 8, 9, 100, 130, 150]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: