题解 | #最长上升子序列(一)# [S-P0]

最长上升子序列(一)

http://www.nowcoder.com/practice/5164f38b67f846fb8699e9352695cd2f

import java.util.*;

// time O(n^2) solution.
public class Solution {
    public int LIS (int[] arr) {
      if (arr.length <= 1) return arr.length;
      
      // F(i): length of LCI ending with arr[i].
      int[] mem = new int[arr.length];
      Arrays.fill(mem, 1);
      
      // F(i) = MAX(F(j)) + 1, where j < i and arr[j] < arr[i]
      int max = 0;
      for (int i = 1; i < mem.length; i++) {
        for (int j = 0; j < i; j++) {
          if (arr[j] < arr[i]) {
            mem[i] = Math.max(mem[i], mem[j] + 1);
            // 记录global max
            max = Math.max(max, mem[i]);
          }
        }
      }
      
      return max;
    }
}
全部评论

相关推荐

03-10 21:11
武汉大学 运营
学不懂的那种:先天考公圣体
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务