public final int findLongestChain(int[][] pairs) { sort(pairs); int[] dp=new int[pairs.length]; dp[0]=1; int maxRe=0; for(int i=1;i<dp.length;i++){ int maxTe=1; for(int j=i-1;j>=0;j--){ if(pairs[i][0]>pairs[j][1]){ maxTe=Math.max(maxTe,dp[j]+1); } } dp[i]=maxTe; maxRe=Math.max(maxRe,maxTe); } return maxRe; } private final void sort(int[][] pairs){ for(int i=0;i<pairs.length;i++){ for(int j=i;j<pairs.length;j++){ if(pairs[i][0]>pairs[j][0]){ int[] temp=pairs[i]; pairs[i]=pairs[j]; pairs[j]=temp; } } } }