题解 | #最长无重复子数组#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;
    }
};
全部评论

相关推荐

见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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