计算数组中最长排序子序列的问题

时间:2019-07-03 07:09:39

标签: java

我在执行计算最长排序数组的Java程序时遇到问题,但结果始终等于初始值max = 1问题出在哪里?

package longestsortedsquence;

public class Longestsortedsquence {

    public static void main(String[] args) {
        int[] arry={3,98,274,943,23,56,23,4};
        System.out.print(longestsortedsequence(arry));
    }

    public static int longestsortedsequence(int[] arry){
        if(arry==null){
            return 0;
        }
        int max=1;
        int len=1;
        for(int i=0;i<arry.length-1;i++){
            if(arry[i]<=arry[i+1]){
                len=len++;
            }
            else{
                len=1;
            }
            if(max<len){
                max=len;
            }
        }

        return max;
    }
}

3 个答案:

答案 0 :(得分:2)

请勿使用len=len++;

仅使用len++;

您可以在此处查看对此的解释:What is x after "x = x++"?

答案 1 :(得分:1)

len++将返回len,该函数的副作用增加1至len。 您应该使用len++len=++len,但不建议使用第二个选项。

答案 2 :(得分:0)

问题很严重

package longestsortedsquence;

public class Longestsortedsquence {

    public static void main(String[] args) {
        int[] arry={3,98,274,943,23,56,23,4};
        System.out.print(longestsortedsequence(arry));
    }

    public static int longestsortedsequence(int[] arry){
        if(arry==null){
            return 0;
        }
        int max=1;
        int len=1;
        for(int i=0;i<arry.length-1;i++){
            if(arry[i]<=arry[i+1]){
                len=len++;<---- change it to `len++`
            }
            else{
                len=1;
            }
            if(max<len){
                max=len;
            }
        }

        return max;
    }
}