【发布时间】:2021-09-15 06:20:37
【问题描述】:
我必须返回数组中连续 seq 的最大 len。 考虑这个例子:-
N = 7
a[] = {2,6,1,9,4,5,3}
我的代码应该返回 6,但它给出 1。不知道怎么做?
int findLongestConseqSubseq(int arr[], int N)
{
//Your code here
unordered_map<int,int> mp;
int ans=0;
for(int i=0;i<N;i++){
if(mp.count(arr[i])>0){
continue;
}
int len1=mp[arr[i]-1];
int len2=mp[arr[i]+1];
int ns=len1+len2+1;
ans=max(ans,ns);
mp[arr[i]-len1]=ns;
mp[arr[i]+len2]=ns;
// ans=max(ans,ns);
}
return ans;
}
【问题讨论】:
-
你能解释一下为什么你的代码应该返回正确的结果吗?它不是那么明显。我也不明白为什么您的示例输入的正确结果应该是 6
-
我花了一点时间来理解这个问题 - 它要求获取加扰数组中最大数量的连续数字并将其返回。例如,如果我的数组有数字 [9,0,1,2,3,6,8],那将是 [0,1,2,3] 或 4 个连续数字。
-
-
代码没有说明它要完成什么,但标识符中的拼写错误似乎并不完美。什么是
LongestConseq[uent?!]Subseq[uence]/aconsecutive seq[uence]? -
在这种方法中不需要排序,我们必须在 O(N) 中进行。方法是正确的,唯一的问题是地图。
标签: c++ algorithm data-structures hash hashmap