有序数组求交集

来源:互联网 发布:草图大师连接不到网络 编辑:程序博客网 时间:2024/05/20 03:46
14给出了我认为最简单的算法,不过其犯了一点点小错误,我修正了。
  1.   public static void test() {
  2.     int[] a = { 234444788889100130150160 };
  3.     int[] b = { 46777788910100130130140150 };
  4.     int i = 0, j = 0;
  5.     ArrayList<Integer> al = new ArrayList<Integer>();
  6.     while (i < a.length && (j < b.length)) {
  7.       if (a[i] < b[j])
  8.         i++;
  9.       else if (a[i] > b[j])
  10.         j++;
  11.       else {
  12.         al.add(a[i]); // 这里应该先加入,然后再加1
  13.         i++;
  14.         j++;
  15.       }
  16.     }
  17.     System.out.println(al);
  18.   }
运行结果为
[4, 7, 8, 8, 9, 100, 130, 150]


如果不允许重复,则使用TreeSet就行了。
  1. TreeSet<Integer> al = new TreeSet<Integer>();
运行结果
[4, 7, 8, 9, 100, 130, 150]
0 0
原创粉丝点击