题解 | #最长无重复子数组#C++ unordered_map 解决

最长无重复子数组

http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

class Solution {
public:
    /**
     * 
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxLength(vector<int>& arr) {
        // write code here
        // 数组的值——数组的index
        unordered_map<int, int> value_index;
        int maxSize = 0;
        int curSize = 0;

        for (int i = 0; i < arr.size(); i++) {
            if (value_index.count(arr[i]) == 0) {
                value_index[arr[i]] = i;
                curSize++;
            }
            else if (value_index.count(arr[i]) > 0){
                // 记录上一次出现重复的值的 index
                i = value_index[arr[i]];
                value_index.clear();

                curSize = 0;
            }

            if (maxSize < curSize) {
                maxSize = curSize;
            }
        }

        return maxSize;
    }
};
全部评论

相关推荐

2025-11-11 17:45
门头沟学院 Java
扶老蟑螂过马路被无证...:1. 技术栈那里把数据结构删了,小中厂用不上,大厂手撕能难死你,linux那里可以考虑删掉,还不如换个git团队协作开发 2.不要使用一些项目不匹配的技术,例如分库分表和你上边的ddd,真正使用ddd的都是【超】大规模,大部分都仍然使用多模块聚合mvc,这样虽然看起来高大上,但是新增了前期协定需求跟后期维护的成本,因为开发中都是选择最适合当起版本的开发方式跟中间件,这样反而会体现你为了学而学(因为可能面试官都不完全熟悉ddd,然后问你你也回答不出深度) 3.项目写了很多的redis使用,为什么技术栈不写上redis 4.项目技术栈跟业务需求高度重合,完全可以整合成一个,然后再去弄一个感兴趣的其他业务或者轮子,或者把上面的一个换下包装 5.奖项自己编一点奖学金,加个四六级,删掉蓝桥杯
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务