BM92. 最长无重复子数组
描述
示例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]C++ 解法, 执行用时: 10ms, 内存消耗: 3108KB, 提交时间: 2021-09-09
static const auto io_sync_off=[]() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { if(arr.size()<2) { return arr.size(); } vector<int>v(100000); int res=0; int left=0; int right=0; while(right<arr.size()) { if(v[arr[right]]==0) { v[arr[right]]=1; res=max(res,right-left+1); right++; } else { v[arr[left]]=0; left++; } } return res; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 3224KB, 提交时间: 2021-09-15
static const auto io_sync_off=[]() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { if(arr.size()<2) { return arr.size(); } vector<int>v(100000); int res=0; int left=0; int right=0; while(right<arr.size()) { if(v[arr[right]]==0) { v[arr[right]]=1; res=max(res,right-left+1); right++; } else { v[arr[left]]=0; left++; } } return res; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 3236KB, 提交时间: 2021-09-19
static const auto io_sync_off = [](){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { // write code here if(arr.size() < 2){ return arr.size(); } vector<int> v(100000); int res = 0; int right = 0; int left = 0; while(right<arr.size()){ if(v[arr[right]]==0){ //子序列无重复判断 v[arr[right]] = 1; res = max(res,(right-left+1)); ++right; }else{ v[arr[left]] = 0; ++left; } } return res; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 3344KB, 提交时间: 2021-07-03
static const auto io_sync_off = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { // write code here if(arr.size()==0) return 0; vector<int> v(100000); int res=0; int i=0; int j=0; while(j<arr.size()){ if(v[arr[j]]==0){ v[arr[j]]=1; res=max(res,j-i+1); j++; }else{ v[arr[i]]=0; i++; } } return res; } };
C++ 解法, 执行用时: 11ms, 内存消耗: 3124KB, 提交时间: 2021-08-18
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return nullptr; }(); class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& arr) { // write code here//试试为啥我的跑20多ms 他们这个跑10ms,得多学习 if(arr.size()==0) return 0; vector<int> v(100000);//先创建一个vector容器,指定元素个数及初始化为0; int res=0; int i=0; int j=0; while(j<arr.size()) { if(v[arr[j]]==0) { v[arr[j]]=1; res=max(res,j-i+1); j++; } else { v[arr[i]]=0; i++; } } return res; } };