zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 300 最长上升子序列

    300. 最长上升子序列

    给定一个无序的整数数组,找到其中最长上升子序列的长度。

    示例:

    输入: [10,9,2,5,3,7,101,18]
    输出: 4
    解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
    说明:

    可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。
    你算法的时间复杂度应该为 O(n2) 。
    进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?

    class Solution {
         public int lengthOfLIS(int[] nums) {
            // 利用二分查找
            int length = nums.length;
            if (length == 0) return 0;
            int[] dp = new int[length];
            dp[0] = nums[0];
            int res = 1;
            int maxIndex = 0;
            int left = 0;
            int right = 0;
            int middle = 0;
            for (int i = 1; i < length; ++i) {
                if (nums[i] <= dp[0]) dp[0] = nums[i];
                else if (nums[i] > dp[maxIndex]) {
                    ++maxIndex;
                    dp[maxIndex] = nums[i];
                } else {
                    left = 0;
                    right = maxIndex;
                    while (left < right) {
                        if (left + 1 == right) {
                            dp[right] = nums[i];
                            break;
                        }
                        middle = (left + right) / 2;
                        if (dp[middle] == nums[i]) {
                            break;
                        } else if (dp[middle] < nums[i]) left = middle;
                        else right = middle;
                    }
                }
                res = Math.max(res, maxIndex + 1);
                /*
                for (int k = 0; k <= maxIndex; ++k) {
                    if (k == maxIndex) System.out.println(dp[k]);
                    else System.out.print(dp[k]);
                }
                */
            }
            return res;
        }
    }
    
  • 相关阅读:
    Apache Common DbUtils
    Jackson 框架,轻易转换JSON
    Java数据库ResultSet转json实现
    java获得当前文件路径
    JSP基本面试的试题
    mysql优化方法积累
    linux数据盘分区以及格式化
    linux 数据盘和系统盘的查看
    配置Tomcat使用https协议(配置SSL协议)
    idea-java项目配置
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075252.html
Copyright © 2011-2022 走看看