获取最长的增长列表
从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(); }