在Java中,如何循环直到前两个元素等于数组的最后两个元素?

在Java中,如何循环直到前两个元素等于数组的最后两个元素?,java,arrays,dynamic-programming,greedy,Java,Arrays,Dynamic Programming,Greedy,我正在尝试做一个调整,但要使前两个元素与后两个元素相等。我正在努力找出一种方法来计算摆动子序列,只要最终输出总是最后两个元素等于前两个元素 到目前为止,代码是 public static int calculation(int[] A, int n){ if( A.length == 0 ){ return 0; } int[] up = new int[A.length]; int[] down = new int[A.leng

我正在尝试做一个调整,但要使前两个元素与后两个元素相等。我正在努力找出一种方法来计算摆动子序列,只要最终输出总是最后两个元素等于前两个元素

到目前为止,代码是

 public static int calculation(int[] A, int n){
   
    if( A.length == 0 ){
        return 0;
    }
   
    int[] up = new int[A.length];
    int[] down = new int[A.length];
   
    up[0] = 1;
    down[0] = 1;
   
        for(int i = 1 ; i < A.length; i++){
            do{
            if( A[i] > A[i-1] ){      //wiggles up, element before it must be a down position
                up[i] = down[i-1]+1;
                down[i] = down[i-1];
            }else if( A[i] < A[i-1]){ //wiggles down, element before it must be a up position
                down[i] = up[i-1]+1;
                up[i] = up[i-1];
            }else{                    //does not change anything so both up[i] and down[i] stay the same
                down[i] = down[i-1];
                up[i] = up[i-1];
            }
        //else if - think of what to return if true
        //or else if to return if false ????
    } while (A[0] != A[A.length-1]); //attempt at while statement
   }
       
    return Math.max(down[A.length-1],up[A.length-1])/2; //returning the amount of pairs in array
}
公共静态整数计算(int[]A,int n){
如果(A.length==0){
返回0;
}
int[]向上=新的int[A.长度];
int[]向下=新的int[A.长度];
up[0]=1;
向下[0]=1;
for(int i=1;iA[i-1]){//向上摆动,则它前面的元素必须是向下位置
向上[i]=向下[i-1]+1;
向下[i]=向下[i-1];
}否则,如果(A[i]
我想做一段时间,整数数组的前两个元素等于循环中的最后两个元素,但不知道如何做前两个和最后两个元素,而不仅仅是第一个和最后一个,而且这似乎无论如何都不起作用,但无法从逻辑上解释原因

正如您所知,我是一个完全的初学者,这是一个我被赋予的任务,我真的很难在Java中完成。任何建议都将不胜感激

注意:输入是数组int[]A,int n是序列A中的整数数