入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

面试题:求2个有序数组的有序交集

创建时间:2008-10-19 投稿人: 浏览次数:3316
内容来自论坛:http://topic.csdn.net/u/20081012/14/3cc93688-1f7f-4985-806c-3f729c78261b.html

14给出了我认为最简单的算法,不过其犯了一点点小错误,我修正了。
  1.   public static void test() {
  2.     int[] a = { 2, 3, 4, 4, 4, 4, 7, 8, 8, 8, 8, 9, 100, 130, 150, 160 };
  3.     int[] b = { 4, 6, 7, 7, 7, 7, 8, 8, 9, 10, 100, 130, 130, 140, 150 };
  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]



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。