# 算法研究：已知不重复的int集合，求最长递增子序列

package com.galaxy.fym.algorithm.maxsublist;

import org.apache.commons.collections.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
* Created by fengyiming on 2017/2/16.
* @author fengyiming 对int集合转化成所有可能的递增子集合
*/
public class Search {

public static List<List<Integer>> search(List<Integer> list) {
List<List<Integer>> allList = new ArrayList<List<Integer>>();
int size = list.size();
for (int i = 0; i < size; i++) {
int value = list.get(i);
//这个集合用来存储如果当前value被加入到其他子集合的时候保存被加入的子集合的原值
List<List<Integer>> newAllList = new ArrayList<List<Integer>>(allList.size());
//对已存在的子集合集合遍历，判断当前元素是否小于子集合，是的话就加在结尾，另外保存当前子集合
if(CollectionUtils.isNotEmpty(allList)) {
for (List<Integer> subList : allList) {
int subSize = subList.size();
int last2Value = subList.get(subSize - 1);
if (last2Value < value) {
//如果仅次于，便不用添加了
if(value - last2Value > 1) {
}
}
}
}
//将被加入元素的子集合的原值放入到所有子集合里
if(CollectionUtils.isNotEmpty(newAllList)){
}
//新建一个仅含当前元素的子集合
List<Integer> newSubList = new ArrayList<Integer>(size - 1);
}
return allList;
}

public static List<List<Integer>> getMaxList(List<List<Integer>> allList){
System.out.println("---------------所有递增子集合-------------");
int max = 0;
List<List<Integer>> allSubList = new ArrayList<List<Integer>>();
for (List<Integer> subList : allList) {
for (Integer value : subList) {
//System.out.print(value + " ");
}
if (subList.size() > max) {
max = subList.size();
allSubList = new ArrayList<List<Integer>>();
} else if (subList.size() == max) {
}
//System.out.println();
}
System.out.println("---------------最长的子集合-------------");
for (List<Integer> subList : allSubList) {
for (Integer value : subList) {
System.out.print(value + " ");
}
System.out.println();
}
return allList;
}
}

---------------随机数列-------------
17 13 16 8 5 25 10 18 14 0 27 3 2 9 7 4 44 29 12 30
---------------随机数列-------------

---------------最长的子序列-------------
13 16 25 27 29 30
13 16 18 27 29 30
8 10 18 27 29 30
5 10 18 27 29 30
8 10 14 27 29 30
5 10 14 27 29 30

Process finished with exit code 0

|
27天前
|

67 2
|
28天前
|

35 0
|
11天前
|

181 1
|
1天前
|

20 9
|
4天前
|

Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
13 2
|
25天前
|

【机器学习】Q-Learning算法：在序列决策问题中的实践与探索
【机器学习】Q-Learning算法：在序列决策问题中的实践与探索
31 0
|
19天前
|

Java数据结构与算法：用于处理不相交集合的合并和查找问题
Java数据结构与算法：用于处理不相交集合的合并和查找问题
13 0
|
19天前
|

C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
18 0
|
1月前
|

17 0
|
1月前
|

19 0