从List<int> 的泛型列表中获取最长的增长列表。
有两种方式,时间复杂分别为O(n^2) 和 O(n)。
static void GetLongList(List<int> list)
{
int i, j;
List<int> listL = new List<int>();
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
listL.Add(1);
for (i = 0; i < list.Count; i++)
{
for (j = 0; j < i; j++)
{
if (list[j] < list[i] && listL[i] <= list[j])
{
listL[i] = listL[j] + 1;
}
}
}
foreach (var o in listL)
{
Console.WriteLine(o);
}
Console.Read();
}
static void GetLongListII(List<int> list)
{
int i;
List<int> listL = new List<int>();
int middle = list.Count / 2;
for (i = 0; i < list.Count; i++)
{
if (i>0)
{
if (list[i] > listL.Max())
{
listL.Add(list[i]);
}
}
else
{
listL.Add(list[i]);
}
}
foreach (var o in listL)
{
Console.WriteLine(o);
}
Console.Read();
}