C++:哈希+双指针

找到字符串的最长无重复字符子串

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

#include<unordered_map>
class Solution {
public:
    int maxLength(vector<int>& arr) {
        unordered_map<int , int> mymap;
        int i = 0 , Max = INT_MIN;
        while(i<arr.size())
        {
            mymap.clear();
            mymap[arr[i]] = i;
            int j = i+1;
            while(j<arr.size())
            {
                if(mymap.count(arr[j])==0)//返回匹配特定键的元素数量
                {
                    mymap[arr[j]] = j;
                }
                else
                {
                    i = mymap.at(arr[j]);//访问指定键值的元素
                    break;
                }
                j++;
            }
            i++;
            int temp = mymap.size();
            Max = max(Max , temp);
        }
        return Max;
    }
};

全部评论
不加头文件,是不是用不了unordered_map?
点赞 回复 分享
发布于 2021-03-26 19:43
class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { // write code here // 数组的值——数组的index unordered_map<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; } };</int></int>
点赞 回复 分享
发布于 2021-07-13 22:17

相关推荐

点赞 评论 收藏
分享
北斗导航Compass低仿版:没必要写这么多东西,还是尽量浓缩成一页,自我评价,git和cursor Trae这些都可以去掉。实习经历的描述最好根据star法则改一下,别这么直白
点赞 评论 收藏
分享
评论
9
1
分享

创作者周榜

更多
牛客网
牛客企业服务