第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在C++里的unordered_map中,訪問(wèn)不存在的一個(gè)元素,出現(xiàn)了問(wèn)題,謝大佬指點(diǎn)一下

在C++里的unordered_map中,訪問(wèn)不存在的一個(gè)元素,出現(xiàn)了問(wèn)題,謝大佬指點(diǎn)一下

下面的代碼在輸入[1,3,2,2,5,2,3,7]后返回5。classSolution{public:intfindLHS(vector&nums){//注意:子序列不要求連續(xù),子串要求連續(xù)//用哈希表統(tǒng)計(jì)一下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語(yǔ)句注釋掉,返回的竟然是1?這里明明是求max的操作,無(wú)論如何不可能得到比之前的5更小的值吧?這是在做LeetCode594時(shí)遇到的問(wèn)題。另外,即使使用注釋掉了兩個(gè)if語(yǔ)句后的代碼,如果將輸入的第一個(gè)數(shù)字1改成某些數(shù)字,如數(shù)字8,那么該函數(shù)又能正常返回5了,這是為什么?
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

這個(gè)代碼我看了下,應(yīng)該是求無(wú)序map的連續(xù)兩個(gè)key的vaule之和的最大值,打印一下ump=std::unordered_mapwith5elements={[7]=1,[5]=1,[2]=3,[1]=1,[3]=2},可直觀的看到2和3連續(xù),并且ump[2]+ump[3]最大,即為5。
如果去掉兩個(gè)if判斷是否存在ump[key],就無(wú)法保證存在連續(xù)的key,如ump[7+1]就不存在,根據(jù)stakoverflow的描述,它會(huì)補(bǔ)充一個(gè)默認(rèn)的值在ump[8];調(diào)試時(shí)打印ump如下
(gdb)pump
$1=std::unordered_mapwith5elements={[7]=1,[5]=1,[2]=3,[1]=1,[3]=2}
(gdb)pump
$2=std::unordered_mapwith6elements={[7]=1,[5]=1,[2]=3,[8]=0,[1]=1,[3]=2}
(gdb)pump
$3=std::unordered_mapwith7elements={[6]=0,[3]=2,[1]=1,[8]=0,[2]=3,[5]=1,[7]=1}
這時(shí)候ump的size會(huì)增大,遍歷一個(gè)在自增的map結(jié)局我也不知道會(huì)發(fā)生什么,我這里測(cè)試的是執(zhí)行完一輪就跳出for循環(huán)了。
                            
查看完整回答
反對(duì) 回復(fù) 2019-06-21
  • 2 回答
  • 0 關(guān)注
  • 1870 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)