大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

本题考察如何使用哈希表来快速查找最长连续标签序列的长度。

题目解答方法的文字分析

我们可以使用哈希表来解决这个问题。

具体步骤如下:

  1. 使用unordered_set记录所有牛的标签编号,以便快速查找是否存在某个编号。
  2. 遍历tag数组,对于每个标签编号,检查是否存在其前一个编号和后一个编号,如果存在,则说明存在连续标签序列。
  3. 对于每个连续标签序列,使用while循环不断向前和向后查找,直到找不到连续标签为止。
  4. 在查找过程中,将已经访问过的标签从unordered_set中移除,以避免重复查找。
  5. 更新最长连续标签序列的长度。
  6. 返回最长连续标签序列的长度。

本题解析所用的编程语言 (C++)

C++

完整且正确的编程代码

class Solution {
public:
    int longestConsecutive(vector<int>& tag) {
        unordered_set<int> nums_set; // 记录所有牛的标签编号

        for (int t : tag) {
            nums_set.insert(t); // 将标签编号加入哈希表
        }

        int longest_len = 0; // 最长连续标签序列的长度

        for (int t : tag) {
            // 如果t - 1存在于哈希表中,说明存在连续标签序列
            if (nums_set.count(t - 1) == 0) {
                int current_len = 1; // 当前连续标签序列的长度
                int current_num = t; // 当前连续标签序列的起始标签编号

                // 不断向后查找连续标签序列
                while (nums_set.count(current_num + 1) > 0) {
                    current_num++;
                    current_len++;
                }

                longest_len = max(longest_len, current_len); // 更新最长连续标签序列的长度
            }
        }

        return longest_len;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!