You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何在打印最长连续相同元素长度的同时输出对应序列

你可以修改原方法的返回值,直接返回最长连续相等序列对应的子数组,子数组的长度就是你要的最长长度,这样就能同时拿到两个信息。具体修改逻辑如下:

  • 遍历过程中额外记录两个索引:当前连续序列的起始位置、最长连续序列的起始位置
  • 每当更新最长长度时,同步更新最长序列的起始位置
  • 遍历结束后根据最长长度和起始位置截取对应的子数组返回

修改后的完整代码如下:

import java.util.Arrays;

public class Q3 {
    public static void main(String[] args) {
        int[] y = { 6, 7, 4, 4, 4, 4, 7, 1, 3, 3, 4, 1, 4, 3, 4, 2, 9, 1, 8, 2, 7 };
        System.out.println(Arrays.toString(y));
        int[] longestSeq = longestEqualSequence(y);
        System.out.println("The longest sequence is length: " + longestSeq.length);
        System.out.println("The longest sequence is: " + Arrays.toString(longestSeq));
    }

    public static int[] longestEqualSequence(int[] array) {
        // 空数组边界处理
        if (array == null || array.length == 0) {
            return new int[0];
        }
        int currentSequence = 1;
        int maxSequence = 1;
        int currentStart = 0;
        int maxStart = 0;

        for (int i = 1; i < array.length; i++) {
            if (array[i] == array[i - 1]) {
                currentSequence++;
            } else {
                if (currentSequence > maxSequence) {
                    maxSequence = currentSequence;
                    maxStart = currentStart;
                }
                currentSequence = 1;
                currentStart = i;
            }
        }

        // 检查数组末尾的最后一段序列是否为最长
        if (currentSequence > maxSequence) {
            maxSequence = currentSequence;
            maxStart = currentStart;
        }
        // 截取最长子数组返回
        return Arrays.copyOfRange(array, maxStart, maxStart + maxSequence);
    }
}

运行后会同时输出最长序列的长度和对应的元素内容,你给出的测试用例运行后会输出长度为4的[4,4,4,4]序列。

内容的提问来源于stack exchange,提问作者user16324183

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:24:02