瓶子破碎的最高安全樓層

2021-10-06 21:10:34 字數 761 閱讀 8337

我輩喜學劍,十年居寒潭。一朝斬長蛟,碧水赤三月

有n層的樓,有兩個強度相同的瓶子,設計乙個辦法來檢測該種瓶子的可以承受的最高樓層。 

如果,瓶子從第x樓扔下後不會碎,從第x+1層扔下來之後碎了,則其最高承受樓層為x。瓶子不碎的話可以撿起來繼續扔。

interview時臨時想起的,腦子中冒出來了快慢指標的思想,於是想出來該種方法,思路是對的,但是不是最好的。  見多識廣的重要性阿。

記瓶子的最高承受層為max;

每隔兩層扔一次,例如,第乙個瓶子從1層扔,第二個瓶子從4層扔,有以下結果:

#第1瓶子碎了,則max=1

#第1瓶子沒碎,第2個瓶子碎了,則,max=2或3,再扔一次檢測這兩層即可;

#第1瓶子沒碎,第2個瓶子沒碎,則,從第7層開始扔;

最差時間複雜度: n/4 *2 +1   --->o(n)

先扔乙個瓶子,從底層往上, 每隔 n^(1/2),扔一次,如果某次扔下後碎了,則開始用另乙個瓶子來檢測n^(1/2)個樓層即可。

舉例:n=100, n^(1/2)=10, 最壞情況是,先扔9次,10層,20層,... , 100層, 到100層時才碎,然後,用另乙個瓶子檢測91-99這幾個樓層,即從第91層開始扔,最壞是扔到99層才碎。 則共扔了10+9次。

時間複雜度:

n / ( n^(1/2) )+n^(1/2) -1 = 2 * n^(1/2)  - 1    ------->o(n^(1/2))

高可用高安全app的api

高安全 背景 介面請求與引數暴露,重要api返回資料明文,登入請求安全,層資料安全等 授權碼sign演算法 登入場景access token演算法 access token唯一性支援 api一次請求支援 如何做?基於https進行,採用aes加密 個人所好 基本引數放header,設定常規引數,請求...

MYSQL刪除匿名使用者的方法 提高安全性

安裝完mysql以後會自動建立乙個root使用者和乙個,對於root大家都非常注意,而這個很多人都會忽略,大概是因為預設設定為只能在本地使用的緣故吧。但如果mysql要作為資料庫提供給web伺服器使用的話,忽略這個的代價可能相當慘重。因為在預設設定下,這個在localhost上幾乎擁有和root一樣...

防火牆遷移 最大程度提高安全彈性與可用性的5種方法

如果您正在計畫一次防火牆公升級,或者正在向下一代防火牆遷移,獲得的將不僅是更豐富的功能與更廣泛的保護,還有檢視整個安全架構的機會。後者確保了安全架構得以盡可能提高全部安全裝置的價值與效率,同時最大程度地降低網路停機風險。這種風險之所以引人注目,是因為知名研究諮詢公司gartner指出,一系列行業的平...