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。
该题考察的知识点是使用哈希集合来处理数组中的元素,并通过遍历和判断来寻找最长连续序列的长度。
代码的文字解释大纲如下:
- 遍历输入的标签数组
tag
,将每个标签添加到tagSet
中。 - 初始化变量
longestStreak
作为记录最长连续序列的长度,默认值为0。 - 对于
tagSet
中的每个标签t
,判断是否存在t - 1
,如果不存在,表示t
是一个连续序列的起点。 - 以当前标签
t
为起点,使用循环递增currentTag
和currentStreak
,直到找到不再连续的标签为止。在循环过程中,不断更新currentStreak
的长度。 - 每次找到更长的连续序列时,更新
longestStreak
的值。 - 最后返回
longestStreak
作为最长连续序列的长度。