• FindLongArray


    package findlongarray;

    import java.util.Stack;

    class LongArray {

    int array[];
    Stack stack;

    public LongArray() {
    }

    public LongArray(int i) {
    array = new int[10];
    {
    for (int j = 0; j < i; j++) {
    array[j] = (int) (Math.random() * 26);
    System.out.print(array[j] + " ");
    }
    }
    }

    public int findMaxarry() //判断当前数组最大递增个数,
    {
    System.out.println();
    Object arraymax[]=new Object[10];
    for(int i=0;i<arraymax.length;i++){arraymax[i]=-1;}
    // int array[]={16,3,4,24,13,18,15,4,19,6};
    for(int i=0;i<array.length;i++)
    {
    System.out.print(array[i] + " ");
    }
    Stack stacktemp;
    Stack stackarray = new Stack();
    int itemp = 0;//栈的长度
    int jtemp = 0;//下标。
    int maxtemp = 0;
    for (int i = 0; i < array.length; i++) {
    stacktemp = new Stack();
    stacktemp.push(i);
    for (int j = i + 1; j < array.length; j++) {
    jtemp = (int) stacktemp.peek();
    if (array[j] > array[jtemp]) {
    stacktemp.push(j);
    }
    }//构造了一个以栈,存放当前包含碰到的直接递增的数组,进出栈,不断试探。
    itemp = stacktemp.size();//取数组长度

    if (itemp > maxtemp)//当前构造的数组长于之前,替换之。
    {

    maxtemp = itemp;
    System.out.println("当前 " + stackarray.toString() );
    arraymax=stacktemp.toArray();
    stackarray = stacktemp;//
    System.out.println("更后 " + stackarray.toString()+"长度为" + maxtemp);
    }
    // System.out.println(stacktemp.toString());
    int ktemp = i + 1;
    while (stacktemp.size() > 1 && ktemp != array.length - 1) {
    ktemp = (int) stacktemp.pop() + 1;
    for (int k = ktemp; k < array.length; k++) {
    jtemp = (int) stacktemp.peek();
    if (array[k] > array[jtemp]) {
    stacktemp.push(k);
    System.out.println( "插入之后"+stacktemp.toString());
    }
    }
    System.out.println("跳出");
    itemp = stacktemp.size();//取数组长度
    if (itemp > maxtemp)//当前构造的数组长于之前,替换之。
    { maxtemp = itemp;
    stackarray = stacktemp;
    arraymax=stacktemp.toArray();
    }
    }

    }
    System.out.println("\n"+arraymax.toString());
    for(int i=0;i<arraymax.length;i++)
    {
    System.out.print(arraymax[i]+" ");
    }

    return maxtemp;
    }
    }

    /**
    *
    * @author Administrator
    */
    public class FindLongArray {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    // TODO code application logic here
    LongArray la=new LongArray(10);
    la.findMaxarry();
    }
    }

  • 相关阅读:
    c++ 面试注意的问题
    非root用户 gcc安装
    爱挑剔的acm程序员 acmer
    Add Digits
    Rectangle Area
    Contains Duplicate III 下标范围<=k 值范围<=t
    ruby第一次实践 ”hello world“
    判断一个 int 向量里是否有相同的数 并且距离在k之内 (2)
    判断一个 int 向量里是否有相同的数(1)
    字符串同构
  • 原文地址:https://www.cnblogs.com/xiekai/p/3491578.html
Copyright © 2020-2023  润新知