Java 题解 | #连续的牛群标签序列#

连续的牛群标签序列

https://www.nowcoder.com/practice/5db36ae74c274176a0cf9274e9f9ed3e

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param tag int整型一维数组
     * @return int整型
     */
    public int longestConsecutive (int[] tag) {
        // write code here
        HashSet<Integer> tagSet = new HashSet<>();
        for (int t : tag) {
            tagSet.add(t);
        }

        int longestStreak = 0;

        for (int t : tagSet) {
            if (!tagSet.contains(t - 1)) {
                int currentTag = t;
                int currentStreak = 1;

                while (tagSet.contains(currentTag + 1)) {
                    currentTag += 1;
                    currentStreak += 1;
                }

                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }

        return longestStreak;
    }
}

编程语言是Java。

该题考察的知识点是使用哈希集合来处理数组中的元素,并通过遍历和判断来寻找最长连续序列的长度。

代码的文字解释大纲如下:

  1. 遍历输入的标签数组tag,将每个标签添加到tagSet中。
  2. 初始化变量longestStreak作为记录最长连续序列的长度,默认值为0。
  3. 对于tagSet中的每个标签t,判断是否存在t - 1,如果不存在,表示t是一个连续序列的起点。
  4. 以当前标签t为起点,使用循环递增currentTagcurrentStreak,直到找到不再连续的标签为止。在循环过程中,不断更新currentStreak的长度。
  5. 每次找到更长的连续序列时,更新longestStreak的值。
  6. 最后返回longestStreak作为最长连续序列的长度。
全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务