java - 递归地找到java中数组中最长的递增序列

标签 java arrays recursion

例如这是数组 [1, 4, 9, 2, 6, 7, 3, 5, 8, 10]。 1,2,3,5,8,10 就是答案

那么我怎样才能用递归来解决这个问题。

感谢您的帮助。

public class 4b {

   public static int getLongetsLadder(int[] array){
   int i=0; 
   int[] result = recursive(array,i); 

   return 0; 
   }
   public static int[] recursive(int[] array, int i)
   {
   return null;
   }


   public static int[] recurse(int  i, int arr[])
   {
       int[] answer = new int[1];
       answer[0]= arr[i];

       return answer;

   }
}

最佳答案

Java实现如下:

public static Integer[] recurse(int i, int li, int arr[]) {

    if(i == arr.length)
        return new Integer[0];

    boolean choice = (li == -1) || arr[li] < arr[i];
    /* now you have choice to choose it or skip it */
    if(choice) {
        /* choose it */
        ArrayList<Integer> l = new ArrayList<Integer>();
        l.add(i);
        for(Integer v : recurse(i + 1, i, arr)) {
            l.add(v);
        }

        /* dont choose it */
        ArrayList<Integer> r = new ArrayList<Integer>();
        for(Integer v : recurse(i + 1, li, arr)) {
            r.add(v);
        }

        /* return largest */
        return l.size() > r.size() ? l.toArray(new Integer[0]) : r.toArray(new Integer[0]);
    }

    /* skip and proceed */
    return recurse(i + 1, li, arr);
}

应该这样称呼:

public static void main(String[] args) {
    findLargest(1, 4, 9, 2, 6, 7, 3, 5, 8, 10);
}
public static void findLargest(int ... vals) {
    Integer[] longest = recurse(0, -1, vals);
    for(Integer i : longest) {
        System.out.println(vals[i]);
    }
}

上述调用的结果是 1, 2, 3, 5, 8, 10

关于java - 递归地找到java中数组中最长的递增序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970940/

相关文章:

java - Spring Boot - CORS 过滤器适用于 GET,但不适用于其他 HTTP 动词

python - 从数组中获取行中元素满足条件的索引

python - 递归搜索词典中的句子(Python)

Python:递归函数的基本情况

python - 如何在Python中获取dict列表而不是使用collection.defaultdict

java - 读取远程文件的内容

c# - 如果我在一个没有等待的线程上调用 notify 会发生什么?

php - 如何检查一个数组元素是否完全存在于php中的另一个数组中

javascript - 如何使用 Nashorn 从 Java 方法返回真正的 JavaScript 数组?

java - 在Java中,无法从子类访问父类(super class)的 protected 成员