[Java] Java输出数组中最长递增子序列 →→→→→进入此内容的聊天室

来自 , 2020-05-06, 写在 Java, 查看 100 次.
URL http://www.code666.cn/view/5eb13cb6
  1. package com.wzs;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6.  
  7. //求数组中最长递增子序列
  8. public class Test
  9. {
  10.     public static void main(String[] args)
  11.     {
  12.         int a[] =
  13.         {
  14.                 1, -1, 2, -3, 4, -5, 6, -7
  15.         };
  16.         find1(a);
  17.     }
  18.  
  19.     // [1, -1, 2, -3, 4, -5, 6, -7]
  20.     // [1, 1, 2, 1, 3, 1, 4, 1]
  21.     // 时间复杂度:O(N*N)
  22.     public static void find1(int[] a)
  23.     {
  24.         int length = a.length;
  25.         int[] list = new int[length];// 存储第i个元素之前的最长递增序列值
  26.         List<Integer> result = new ArrayList<Integer>(); // 存储最长递增序列
  27.         for (int i = 0; i < length; i++)
  28.         {
  29.             list[i] = 1;
  30.             for (int j = 0; j < i; j++)
  31.             {
  32.                 if (a[j] < a[i] && list[j] + 1 > list[i])
  33.                 {
  34.                     list[i] = list[j] + 1;
  35.                     if (result.isEmpty())
  36.                     {
  37.                         result.add(list[j]);
  38.                     }
  39.                     if (!result.contains(list[i]))
  40.                     {
  41.                         result.add(list[i]);
  42.                     }
  43.                 }
  44.             }
  45.         }
  46.         System.out.println("第i个元素时最长递增序列:" + Arrays.toString(list));
  47.         // 寻找list中最大值
  48.         int max = list[0];
  49.         for (int i = 0; i < length; i++)
  50.         {
  51.             if (list[i] > max)
  52.             {
  53.                 max = list[i];
  54.             }
  55.         }
  56.         System.out.println("最长递增序列长度:" + max);
  57.         System.out.println("最长递增序列:" + result);
  58.     }
  59. }
  60.  
  61. //java/6691

回复 "Java输出数组中最长递增子序列"

这儿你可以回复上面这条便签

captcha