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作为最长连续序列的长度。

查看20道真题和解析