根據(jù)用戶名(id)和權(quán)重抽獎(jiǎng) test_model運(yùn)行結(jié)果 權(quán)重: 1 此權(quán)重中獎(jiǎng)次數(shù): 49514權(quán)重: 2 此權(quán)重中獎(jiǎng)次數(shù): 96324權(quán)重: 3 此權(quán)重中獎(jiǎng)次數(shù): 14...
第二題你犯了太多的錯(cuò)誤,先說(shuō)對(duì)數(shù)據(jù)結(jié)構(gòu)的理解上。1 map本身就是無(wú)序的,只要是range取第一個(gè),然后break就是隨機(jī),沒(méi)必要全遍歷。2,你都知道了map的長(zhǎng)度卻還使用slice而不是數(shù)組,性能會(huì)非常差,因?yàn)閟lice要不挺的擴(kuò)容,擴(kuò)容要找更大的連續(xù)內(nèi)存,并將原來(lái)的數(shù)據(jù)拷貝到新內(nèi)存,你這樣數(shù)據(jù)量大的時(shí)候不僅時(shí)間幾何級(jí)數(shù)的增長(zhǎng),還可能內(nèi)存不足。
再說(shuō)設(shè)計(jì)上的問(wèn)題,根本就不應(yīng)該將map轉(zhuǎn)成數(shù)組,記住任何時(shí)候不要輕易的做這件事。而且你這題根本沒(méi)必要,實(shí)現(xiàn)權(quán)重抽獎(jiǎng)只需要遍歷一遍map就可以了,遍歷之前設(shè)置一個(gè)變量max存名字和最大隨機(jī)數(shù),遍歷的時(shí)候只要只要每次根據(jù)權(quán)重算個(gè)隨機(jī)數(shù),比max大就保留,這樣循環(huán)一次就搞定,根本不要這么復(fù)雜。
Gopher面試中的Coding從四月份下半月開(kāi)始,陸陸續(xù)續(xù)面試了幾家公司,都是golang的崗位。每一次面試,側(cè)重點(diǎn)都會(huì)有不同,有的會(huì)直接給過(guò)來(lái)一道試題, 然后邊解題,邊講述自己的思路,然后面試官根據(jù)你的...