从数组中找出相同的元素,并且分组存放,采用递归算法
这里主要说一个算法,给定一个数组,该数组中有相同元素,把数组中相同的元素分组存放。要求,时间复杂度最低。 思想是:1.取出数组中的第一个元素a。2.对于后续的元素同a比较,相同的放到新容器sameList中,不同的放入新容器diffList中。3.判断如果diffList中有元素,在重复1.2.直到diffList中没有新元素为止,递归结束。============
这里主要说一个算法,
给定一个数组,该数组中有相同元素,把数组中相同的元素分组存放。
要求,时间复杂度最低。
思想是:
1.取出数组中的第一个元素a。
2.对于后续的元素同a比较,相同的放到新容器sameList中,不同的放入新容器diffList中。
3.判断如果diffList中有元素,在重复1.2.直到diffList中没有新元素为止,递归结束。
===================代码如下=============================================
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayTest
{
public static void main(String[] args)
{
Integer[] array = new Integer[]
{ 1, 1, 1, 3, 3, 4, 5, 3, 4, 5 };
ArrayTest test = new ArrayTest();
test.getSameArrayList(Arrays.asList(array));
println(test.getRetList());
}
private static void println(List<List<Integer>> retList2)
{
for (List<Integer> listItem : retList2)
{
System.out.print("list : ");
for (Integer item : listItem)
{
System.out.print(item);
System.out.print(",");
}
System.out.println("");
}
}
List<List<Integer>> retList = new ArrayList<List<Integer>>();
public List<Integer> getSameArrayList(List<Integer> arrayList)
{
List<Integer> sameList = new ArrayList<Integer>();
List<Integer> diffList = new ArrayList<Integer>();
sameList.add(arrayList.get(0));
for (int i = 1, len = arrayList.size(); i < len; i++)
{
if (arrayList.get(i) == sameList.get(0))
{
sameList.add(arrayList.get(i));
} else
{
diffList.add(arrayList.get(i));
}
}
retList.add(sameList);
if (!diffList.isEmpty())
{
getSameArrayList(diffList);
}
return null;
}
public List<List<Integer>> getRetList()
{
return retList;
}
}
更多推荐
所有评论(0)