现在的位置: 首页 > 综合 > 正文

数组的最长递增 子序列

2018年09月30日 ⁄ 综合 ⁄ 共 1455字 ⁄ 字号 评论关闭
以下是n的方法
import java.util.Arrays;
import java.util.Scanner;

/**
 * @Title: Longest_Up.java
 * @Package
 * @Description: TODO
 * @author nutc
 * @date 2013-9-8 下午7:16:34
 * @version V1.0
 */
public class Longest_Up {

	public static void main(String args[]) {

		Scanner sc = new Scanner(System.in);
		int n;
		while (sc.hasNext()) {
			n = sc.nextInt();
			int[] now = new int[n];
			for (int i = 0; i < n; i++)
				now[i] = sc.nextInt();
			System.out.println(find1(now));
		}
	}

	// public static int find(int[] num){
	// if(num==null) return 0;
	//
	// int big=1;
	//
	// int min = num[num.length-1];
	// for(int i=num.length-2;i>=0;i--){
	// if(num[i]<min){
	// min=num[i];
	// big++;
	// }
	// }
	// return big;
	// }

	public static int find1(int[] num) {
		if (num == null)
			return 0;

		int big = 1;
		int[] max = new int[num.length];
		int[] now = new int[num.length];  //非常重要,记录在自己前面的比自己小的最大值!
		Arrays.fill(max, 1);
		Arrays.fill(now, -1);
		for (int i = 1; i < num.length; i++) {
			int j = i - 1;
			while (j >= 0 && num[j] >= num[i]) {
				j = now[j];
			}
			now[i] = j;
			if (j >= 0) {
				max[i] = max[j] + 1;
				if (max[i] > big)
					big = max[i];
			}
//			System.out.println(i + " " + j);
		}
		return big;
	}

}


以下是n^2的方法
package Array;  

import java.util.Arrays;

/** 
 * @Title: LongestIncrease.java 
 * @Package Array 
 * @Description: TODO
 * @author nutc
 * @date 2013-8-28 下午2:28:11 
 * @version V1.0 
 */
public class LongestIncrease {
	
	public static void main(String args[]){
		int []  a = {1,-1,2,-3,4,-5,6,-7};
		System.out.println(find(a));
	}
	
	public static int find(int[] num){
		
		int longset [] = new int[num.length];
		Arrays.fill(longset, 1);
		
	    int max = 1;
	    
	    for(int i=1;i<num.length;i++){
	    	
	    	for(int j=i-1;j>=0;j--){
	    		if(num[j]<num[i]){
	    			num[i]+=num[j]+1;
	    			if(num[i]>max)
	    				max = num[i];
	    			break;  //要记得break!  不然全部都要循环下了...
	    		}
	    	}
	    }
	    return max;
	}

}
 

抱歉!评论已关闭.