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

摘要:前些天再網上看了很多網友再談論一個很有意思的問題,有關算法的。而后小編追根溯源終于扎到了這篇帖子。說是有位網友在面試小米Java崗三次后,終于挺進了第三輪面試,結果還是敗在了兩道算法題上面。1、寫個讀方法和寫方法,實現讀寫鎖2、一副從1到n的牌,每次從牌堆頂取一張放桌子上,再取一張放牌堆底,直到手機

前些天再網上看了很多網友再談論一個很有意思的問題,有關算法的。而后小編追根溯源終于扎到了這篇帖子。說是有位網友在面試小米Java崗三次后,終于挺進了第三輪面試,結果還是敗在了兩道算法題上面。

1、寫個讀方法和寫方法,實現讀寫鎖

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

對于樓主所發的這個問題,網友們紛紛發表了自己的答案和看法。

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

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

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

很顯然,這應該是處理問題的一種方法。那我們還有沒有其余方法處理呢?接著往下看。

這時,一位自稱是微軟的程序員發表了條評論。

“取一個1~n的數組,這里為了說明取n=5。按照題目中的規則變換,得到數組:[1 3 5 4 2],將該數組下標與值互換得到[1 5 2 4 3],即為答案。解釋:[1 3 5 4 2]的意義是,經過變換,原數組中3號位置的數字現在2號槽,原數組中5號位置的數字現在3號槽... 現在已知變換后的槽存放的是1~n,故只要將下標與值互換就可得到待求數組。

這道題還能繼續擴展:

1.變換規則更復雜使得無法逆向模擬復原原數組;

2.最終得到的序列能擴展為任意序列。請大家以后不要黑微軟是養老院了”

但是樓主貌似沒了解全,問道你這些數字是數組的下標嗎

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

小編看了下,63個贊穩坐第一,評論也有很多人都表示佩服,不愧是微軟的程序員呀!

有人調了半小時才搞定這道題,思路是跟前面的微軟大佬學的,的確這道題單純逆向可解,但逆向的確有局限性,假如碰到難逆向的題就瞎了,多學一點思路,受教了。

不過有位網友表示,我一文科畢業的看大佬們答復如同看天書。

哈哈哈...

對于上面網友們的看法和答案。大家有什么想要表達的呢?歡迎再下方評論區吐槽!

  • 全部評論(0)
最新發布的資訊信息
【系統環境|服務器應用】在CentOS 7上如何安裝Gogs 0.11.53(2020-02-10 10:14)
【系統環境|】淘碼庫,據消息稱已被調查。淘碼庫源碼網,已經無法訪問!(2020-01-14 04:13)
【系統環境|服務器應用】Discuz隱藏后臺admin.php網址修改路徑(2019-12-16 16:48)
【系統環境|服務器應用】2020新網站如何讓百度快速收錄網站首頁最新方法,親測有用!免費(2019-12-16 16:46)
【系統環境|服務器應用】Discuz發布帖子時默認顯示第一個主題分類的修改方法(2019-12-09 00:13)
【系統環境|軟件環境】Android | App內存優化 之 內存泄漏 要點概述 以及 處理實戰(2019-12-04 14:27)
【系統環境|軟件環境】MySQL InnoDB 事務(2019-12-04 14:26)
【系統環境|軟件環境】vue-router(單頁面應用控制中心)常見用法(2019-12-04 14:26)
【系統環境|軟件環境】Linux中的Kill命令(2019-12-04 14:26)
【系統環境|軟件環境】Linux 入門時必學60個文件解決命令(2019-12-04 14:26)
手機二維碼手機訪問領取大禮包
返回頂部
广东11选5今天开奖