题解 | #连续的牛群标签序列# 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 Arrays.sort(tag); int l = 0; int ans = 1; for (int i = 1; i < tag.length; i++) { if (tag[i] - tag[i - 1] == 1) { ans = Math.max(ans, i - l + 1); } else { l = i; } } return ans; } }
使用的是Java语言。
该题考察的知识点是数组排序和遍历。
具体的解题思路如下:
- 首先对给定的整型数组进行排序,使用
Arrays.sort(tag)
方法实现。 - 初始化起始位置
l
为0,表示当前连续序列的起始索引。 - 初始化最大连续序列的长度
ans
为1。 - 使用一次循环遍历数组
tag
,从索引1开始。 - 在循环中,判断当前元素
tag[i]
与前一个元素tag[i - 1]
的差值是否等于1,如果是,则可以构成连续序列。 - 更新最大连续序列的长度
ans
为i - l + 1
,并将其与之前的最大长度进行比较,取较大值。 - 如果当前元素与前一个元素的差值不等于1,则表示当前连续序列被打断,更新起始位置
l
为当前位置i
。 - 循环结束后,返回最大连续序列的长度
ans
作为结果。