Java最长子序列

标签 java

我有一个数组,我想计算由等于数字组成的最长子序列的长度: 示例: 5 1 1 9 9 9 4 4 6 6 4 4 4 --> 最长子序列的长度为 3 (9 9 9)。 这是我到目前为止所得到的,但它不起作用。

int lung=0, lungmax=0;
        int indice = 0;
        int [] values = new int [30];  
        for(int k=0; k<30; k++)
        {
            if (values[k]==values[k+1])
            {
                lung++;
                if (lung>lungmax)
                {
                    lungmax=lung;
                    indice=values[k];
                }
            }   
            else lung=0;
        }

        lungmax = lungmax++;
    System.out.println("the length of the longest subsequence is: "+lungmax);

最佳答案

您的代码有两个错误:

for(int k=0; k<30; k++) {
    if (values[k]==values[k+1]) {

此循环将一直执行,直到k达到值30。因此,k 最后使用的值为 29。如果您在 if 语句中使用该值,则通过调用 values[k+1] (== values[30])。

将该循环更改为:

for(int k = 0; k < values.length - 1; k++) {

第二个问题是这一行:

lungmax = lungmax++;

这与:

相同
int temp = lungmax;
lungmax = lungmax + 1;
lungmax = temp;

正如您所看到的,您“忽略”了增量。将该行更改为:

lungmax++;

关于Java最长子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27201197/

相关文章:

java - Jmeter - beanshell 中的正则表达式 (matcher()/pattern() ) 正在切割国家字符

javascript - 在 ExpressJS 中创建身份验证 header 。 Java 到 Javascript 的翻译

java - Android Studio JDBC MySQL

java - 返回一个使用最终原语的匿名类。它是如何工作的?

java - Apache James 无法送达电子邮件

java - 覆盖时使用组合而不是继承

java - 检查 ArrayList 中的数组元素是否包含特定值

java - 非法访问 : this web application instance has been stopped already

java - 如何从java后端在oracle数据库中使用事务?

java - 使用selenium webdriver运行exe文件