笔试训练48天:最长无重复子数组

NC41 最长无重复子数组中等 通过率:29.72% 时间限制:1秒 空间限制:256M

知识点数组双指针哈希

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=196&tqId=37149&ru=/exam/oj

描述

给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。

子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组

数据范围:0≤arr.length≤1050≤arr.length≤105,0<arr[i]≤1050<arr[i]≤105

示例1

输入:[2,3,4,5]

返回值:4

说明:[2,3,4,5]是最长子数组

示例2

输入:[2,2,3,4,3]

返回值:3

说明:[2,3,4]是最长子数组

示例3

输入:[9]

返回值:1

示例4

输入:[1,2,3,1,2,3,2,2]

返回值:3

说明:最长子数组为[1,2,3]

示例5

输入:[2,2,3,4,8,99,3]

返回值:5

说明:最长子数组为[2,3,4,8,99]

思路:最长无重复:哈希表

cpp 复制代码
#include <algorithm>
class Solution {
int hash[100010]={0};
public:
    int maxLength(vector<int>& arr)
    {
        int left=0,right=0,n=arr.size();
        int ret=0;
        while(right<n)
        {
            hash[arr[right]]++;
            while (hash[arr[right]]>1) {
                hash[arr[left]]--;
                left++;
            }
            ret=max(ret,right-left+1);
            right++;
        }
        return ret;
    }
};
相关推荐
SHARK_pssm2 小时前
【数据结构——顺序表】
c语言·数据结构·经验分享·笔记
yong99902 小时前
基于灰狼算法优化支持向量回归(GWO-SVR)的混合算法
算法·数据挖掘·回归
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章53-QR二维码1
图像处理·人工智能·opencv·算法·计算机视觉
ECT-OS-JiuHuaShan2 小时前
功夫不负匠心人,渡劫代谢舞沧桑
android·开发语言·人工智能·算法·机器学习·kotlin·拓扑学
智者知已应修善业2 小时前
【51单片机ADC-MAX1241/ADC0832驱动】2023-6-6
c++·经验分享·笔记·算法·51单片机
re林檎2 小时前
算法札记——4.26
算法
gumichef2 小时前
*链表OJ
数据结构·链表
tankeven2 小时前
动态规划专题(10):最优三角剖分问题
c++·算法·动态规划
黑眼圈子2 小时前
动态规划问题专项练习(未编辑完成...
学习·算法·动态规划