我有一个数组,我想计算由等于数字组成的最长子序列的长度: 示例: 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/