zoukankan      html  css  js  c++  java
  • [LeetCode]646. 最长数对链

    该题类似[LeetCode]300.最长递增子序列问题

    方法一,动态规划

    /*
    解题思路
    动态规划类单串LIS系列
    
    特殊情况
    pairs.length=1,直接返回1
    
    解题步骤
    1.pairs排序,pairs[i][0]从小到大排序,当pairs[i][0]相等时,按照pairs[i][1]从小到大排序
    
    2.动态规划
    定义状态
    int[] lengths lengths[i]表示以pairs[i]结尾的数对能够形成的最长数对链
    定义状态初始值
    lengths[i]=1 i=0~pairs.length-1
    定义状态转移方程
    lengths[i]=max(lengths[j])+1 j<i,pairs[j][1]<pairs[i][0]
    */
    class Solution {
        public int findLongestChain(int[][] pairs) {
            int N=pairs.length;
            int[] lengths;
            int ans=1;
    
            if(N<=1){
                return N;
            }
            // pairs数组排序
            Arrays.sort(pairs, new Comparator<int[]>(){
                public int compare(int[] a, int[] b){
                    return a[0]==b[0]?a[1]-b[1]:a[0]-b[0];
                }
            });
    
            // 动态规划求解
            lengths=new int[N];
            Arrays.fill(lengths,1);
            for(int i=1; i<N; i++){
                for(int j=0; j<i; j++){
                    if(pairs[j][1]<pairs[i][0] && lengths[i]<=lengths[j]){
                        lengths[i]=lengths[j]+1;
                    }
                }
                ans=Math.max(ans, lengths[i]);
            }
            return ans;
        }
    }
  • 相关阅读:
    安装EPP的调试Zend Debugger
    PHP一周学习小结
    工作小记
    JQuery实现日期联动
    编程珠玑位图法排序
    Asp.net MVC 4 异步方法
    Powershell实现创建zip压缩文件
    使用JustDecompile修改程序集
    Asp.net MVC 3 异步操作
    HTAs文件应用
  • 原文地址:https://www.cnblogs.com/yanxin880526/p/13951977.html
Copyright © 2011-2022 走看看