最长递增子序列
来源:互联网 发布:淘宝二手市场网 编辑:程序博客网 时间:2024/05/21 09:13
问题描述
给定一个数组{5,6,7,1,2,8},求他的最长递增子序列
算法思想
用数组length[i]表示第i个位置到数组末位置的最长子序列的长度。默认初始值为1。for循环双重比较,用变量currentMaxIndex表示当前元素的值,将当前元素的值和后面的每一个元素进行比较,如果小于length[i]+=1,并且将大的值赋值给currentMaxIndex,并将其加入临时变量list集合中。最内层循环结束以后,如果maxLength小于length[i],将length[i]的值赋值给maxLength,并更新sequence。
代码
public static Map<String,Object> get(int [] numbers) { int[] length=new int[numbers.length]; for(int i=0;i<length.length;i++){ length[i]=1; } List<Integer> sequence=new ArrayList<>(); List<Integer> list=new ArrayList<>(); int maxLength=0; for(int i=0;i<numbers.length;i++){ int currentMaxIndex=numbers[i]; list.clear(); list.add(numbers[i]); for(int j=i+1;j<numbers.length;j++){ if(currentMaxIndex<numbers[j]){ currentMaxIndex=numbers[j]; length[i]+=1; list.add(numbers[j]); } } if(maxLength<length[i]){ maxLength=length[i]; sequence.clear(); sequence.addAll(list); } } Map<String ,Object> map=new HashMap<String,Object>(); map.put("sequence", sequence); map.put("maxLength", maxLength); return map; }
结果展示
阅读全文
0 0
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 最长递增子序列
- 【模板】Kruskal 最小生成树
- Unity调用安卓代码创建按钮
- 跨域访问、同源策略
- alpha、scale、rotate、translate使用xml方式进行配置
- 利用表达式树,计算一个加减乘除(可带括号)的表达式
- 最长递增子序列
- SpinControl控件与动态画图
- UVA 111 最长递增子序列
- TCP、UDP、IP 协议分析
- 线性判别分析简明入门教程
- POJ1239 dp (严格递增子序列)
- java中开辟新线程的两种方法以及区别
- POJ 1141 区间dp
- 英语考试 FZU