有序数组求交集
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]
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]
相关文章推荐
- Navicat 工具 构造过程,实现百万数据添加
- 机械传动控制第一周学习随笔
- 搬运随笔二
- spl_autoload_register函数
- 遗传算法优化策略
- oracle 统计表总数
- mysql常用命令操作
- 我要动手安装与应用的一些技术
- linux消息队列用法实例
- Dabbo基础,注意事个人认知
- mssql名词解释
- Java 学习笔记 ------第六章 继承与多态
- linux磁盘使用率查询
- swift 03 运算符
- 树、森林和二叉树的转换
- UIBUtton 的两种图片设置
- 自定义控件,引入报错解决办法、
- U3D中使用XML配置表
- Spring中Assert工具类的用法
- 腾讯财付通反射型XSS一枚(附绕过详细分析)