1. 程式人生 > 其它 >leetcode.最長上升子序列(longest-increasing-subsequence)

leetcode.最長上升子序列(longest-increasing-subsequence)

技術標籤:acm零基礎學資料結構leetcode動態規劃演算法字串

最長上升子序列(longest-increasing-subsequence)

題解
程式碼一

class Solution {
    public int lengthOfLIS(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int[] dp = new int[nums.length];
        dp[0] = 1;
        int maxans = 1;
        for
(int i = 1; i < nums.length; i++) { dp[i] = 1; for (int j = 0; j < i; j++) { if (nums[i] > nums[j]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } maxans = Math.max(maxans, dp[i]); } return
maxans; } }

程式碼二

import java.util.Arrays;

public class Solution {

    public int lengthOfLIS(int[] nums) {
        int len = nums.length;
        if (len < 2) {
            return len;
        }

        int[] dp = new int[len];
        Arrays.fill(dp, 1);

        for (int i = 1; i < len;
i++) { for (int j = 0; j < i; j++) { if (nums[j] < nums[i]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } } int res = 0; for (int i = 0; i < len; i++) { res = Math.max(res, dp[i]); } return res; } }