Java程序員3面小米,被倆算法題難倒,微軟員工6分鐘解決,真丟臉

前些天再網(wǎng)上看了很多網(wǎng)友再談?wù)撘粋€(gè)很有意思的問題,有關(guān)算法的。然后小編追根溯源終于扎到了這篇帖子。說是有位網(wǎng)友在面試小米Java崗三次后,終于挺進(jìn)了第三輪面試,結(jié)果還是敗在了兩道算法題上面。

1、寫個(gè)讀方法和寫方法,實(shí)現(xiàn)讀寫鎖

2、一副從1到n的牌,每次從牌堆頂取一張放桌子上,再取一張放牌堆底,直到手機(jī)沒牌,最后桌子上的牌是從1到n有序,設(shè)計(jì)程序,輸入n,輸出牌堆的順序數(shù)組

對(duì)于樓主所發(fā)的這個(gè)問題,網(wǎng)友們紛紛發(fā)表了自己的答案和看法。

有網(wǎng)友問道,是不是反著做一遍就行了。然后樓主把題目的意思又給他解釋了一遍:“一副撲克牌中抽出13張從a到k然后把上面的一張抽出來放最低下,第二張是1拿出來擺桌上,再把最上面的一張抽出來放底下,第二張是2放桌上,以此類推把他們按照順序都抽出來.怎么擺?”

這時(shí)就有為網(wǎng)友給出了自己的答案,第二個(gè)問題,第一步:從1開始循環(huán)到n遞增num,第二部,在第一步的循環(huán)內(nèi),數(shù)組中從0到n-1循環(huán),每次從數(shù)組中跳過一個(gè)空白位置,插入數(shù)字num。還說道,6,7有問題,要跳過一個(gè)空白位。至于怎么跳。就是arr[i]=0就跳過一次,跳過的次數(shù)局部變量記錄下。但是樓主并沒有回復(fù)他,貌似也是一臉懵逼的。

然后又蹦出來一名網(wǎng)友給出了一個(gè)不同的方法,第一遍從1開始步長(zhǎng)為2,第二遍從2開始步長(zhǎng)為4,第三遍從4開始步長(zhǎng)為8,第m次從2的m-1次方開始,步長(zhǎng)為2的m次方,m=(n+1)/2,直接出結(jié)果,模擬個(gè)蛋。這時(shí),樓主也回復(fù)了他,覺得應(yīng)該是正解。也有很多網(wǎng)友點(diǎn)贊,同時(shí)也表示是正解。

很顯然,這應(yīng)該是解決問題的一種方法。那我們還有沒有其他方法解決呢?接著往下看。

這時(shí),一位自稱是微軟的程序員發(fā)表了條評(píng)論。

“取一個(gè)1~n的數(shù)組,這里為了說明取n=5。按照題目中的規(guī)則變換,得到數(shù)組:[1 3 5 4 2],將該數(shù)組下標(biāo)與值互換得到[1 5 2 4 3],即為答案。解釋:[1 3 5 4 2]的意義是,經(jīng)過變換,原數(shù)組中3號(hào)位置的數(shù)字現(xiàn)在2號(hào)槽,原數(shù)組中5號(hào)位置的數(shù)字現(xiàn)在3號(hào)槽... 現(xiàn)在已知變換后的槽存放的是1~n,故只需將下標(biāo)與值互換即可得到待求數(shù)組。

這道題還可以繼續(xù)擴(kuò)展:

1.變換規(guī)則更復(fù)雜使得無法逆向模擬還原原數(shù)組;

2.最終得到的序列可以擴(kuò)展為任意序列。請(qǐng)大家以后不要黑微軟是養(yǎng)老院了”

但是樓主貌似沒理解全,問道你這些數(shù)字是數(shù)組的下標(biāo)嗎

后面這位微軟的程序員也補(bǔ)充了一下,[]括起來的所有元素都是實(shí)際的數(shù)字(題目中牌上的數(shù)字)。下標(biāo)從1開始

小編看了下,63個(gè)贊穩(wěn)坐第一,評(píng)論也有很多人都表示佩服,不愧是微軟的程序員呀!

有人調(diào)了半小時(shí)才搞定這道題,思路是跟前面的微軟大佬學(xué)的,確實(shí)這道題單純逆向可解,但逆向確實(shí)有局限性,如果碰到難逆向的題就瞎了,多學(xué)一點(diǎn)思路,受教了。

不過有位網(wǎng)友表示,我一文科畢業(yè)的看大佬們回答好像看天書。

哈哈哈...

對(duì)于上面網(wǎng)友們的看法和答案。大家有什么想要表達(dá)的呢?歡迎再下方評(píng)論區(qū)吐槽!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容