双重for循环优化
来源:互联网 发布:手机杀进程软件 编辑:程序博客网 时间:2024/05/01 09:51
假设两个链表List<Obj> oldList, List<Obj> newList。
实现如果 newObj.code = oldObj.code,则 newObj.value = oldObj.code
M为oldList的长度,N为newList的长度,穷举法的时间复杂度为N*M,hash法的时间复杂度为N+M。
Obj的结构为:
class Obj { String code; String value;}
实现如果 newObj.code = oldObj.code,则 newObj.value = oldObj.code
穷举法:
public void selectOld2New1(List<Obj> oldList, List<Obj> newList) { int i = oldList.size() - 1; int j = newList.size() - 1; for (; i >= 0; i--) { for (; j >=0; j--) { Obj oldO = oldList.get(i); Obj newO = newList.get(j); if (oldO.code.equals(newO.code)) { newO.value = oldO.value; break; } } } }
public void selectOld2New2(List<Obj> oldList, List<Obj> newList) { int i = oldList.size() - 1; int j = newList.size() - 1; HashMap<String, Obj> map = new HashMap<String, Obj>(); for (i = oldList.size() - 1; i >= 0; i--) { Obj oldO = oldList.get(i); map.put(oldO.code, oldO); } for (j = newList.size() - 1;j >=0; j--) { Obj newO = newList.get(j); String code = newO.code; if (map.containsKey(code)) { newO.value = ((Obj)map.get(code)).value; } } }
M为oldList的长度,N为newList的长度,穷举法的时间复杂度为N*M,hash法的时间复杂度为N+M。
- 双重for循环优化
- 双重for循环语句块的优化
- 使用多线程优化双重for循环校验
- 双重for循环Test
- for语句双重循环
- for双重循环的总结
- JavaScript 数组双重for循环
- return跳出双重for循环
- oracle的双重for循环
- 17-for的双重循环
- Java 双重for循环性能
- 双重for循环删除数据
- 双重for循环打印九九乘法表
- 双重for循环的几个例子
- 双重for循环重难点解析
- java如何跳出双重for循环
- 代码:双重for循环打印简单图形
- java跳出双重for循环,跳出双重for循环的内部循环并不执行外重循环内代码
- java hashCode()和equals()
- Web端的Tab控件在切换Tab时Load数据出错的处理
- ios url 编码和解码
- 扁鹊的医术
- SSH MySql乱码解决方案
- 双重for循环优化
- SQL MIXTURE
- 字库中英文对照表
- office2007安装过程中出错错误1325 短文件名"Favorites"无效
- 组合数学:B - RPG的错排(错排)
- #define IOPIN (*((volatile unsigned long *) 0xE0028000))
- OCP-1Z0-053-V13.02-225题
- JavaSE基础学习笔记-提高篇-Java反射概要
- DG - 逻辑standby管理