下面的代码在输入[1,3,2,2,5,2,3,7]后返回5。classSolution{public:intfindLHS(vector&nums){ //注意:子序列不要求连续,子串要求连续//用哈希表统计一下unordered_mapump; for(intn:nums)if(ump.find(n)==ump.end())ump.insert(make_pair(n,1));elseump[n]++;intans=0;for(autoitem:ump){if(ump.find(item.first+1)!=ump.end())ans=max(ans,ump[item.first+1]+ump[item.first]);if(ump.find(item.first-1)!=ump.end())ans=max(ans,ump[item.first-1]+ump[item.first]);}returnans;}};如果将14,16行的if语句注释掉,返回的竟然是1?这里明明是求max的操作,无论如何不可能得到比之前的5更小的值吧?这是在做LeetCode594时遇到的问题。另外,即使使用注释掉了两个if语句后的代码,如果将输入的第一个数字1改成某些数字,如数字8,那么该函数又能正常返回5了,这是为什么?
海绵宝宝撒
相关分类