發布時間:2024-01-24閱讀(18)
一個頭發稀少、穿著格子襯衣的中年男子走了進來,把手里拿的MAC放在桌子上,今天小編就來聊一聊關于java代碼中如何實現百分比權重?接下來我們就一起去研究一下吧!

java代碼中如何實現百分比權重
一個頭發稀少、穿著格子襯衣的中年男子走了進來,把手里拿的MAC放在桌子上。
面試官說對我說:“我會用電腦記錄面試過程,你不要介意啊”。
我回答道:“沒關系?!?/p>
?
面試官:“先來一點基礎的算法題吧,用Java寫一個方法,求100萬內的質數。”
我心中暗想確實很基礎,質數不就是除了1和自身外無法被其他數整除的數嗎,于是便寫下:
public static List<Integer> findPrime(){ List<Integer> list = new ArrayList<>(100000); for (int n = 2; n < 1000000; n ) { boolean isPrime = true; for (int i = 2; i < n; i ) { if (n % i == 0) { isPrime = false; break; } } if (isPrime) { list.add(n); } } return list;}
面試官皺了一下眉頭,說:“計算整除的時候,需要從2一直計算到n-1嘛?”
經過這么一提醒,我突然想起來整除計算到平方根就可以了,于是馬上修改了代碼:
public static List<Integer> findPrime(){ List<Integer> list = new ArrayList<>(100000); for (int n = 2; n < 1000000; n ) { boolean isPrime = true; int sqrt = (int) Math.sqrt(n); for (int i = 2; i <= sqrt; i ) { if (n % i == 0) { isPrime = false; break; } } if (isPrime) { list.add(n); } } return list;}
面試官看了看,說:“寫的很好,功能基本上都實現了。不過再想想,有什么可以優化的地方?”
我想了想,說:“好像沒有什么可以優化的?”
我左思右想一番,說:“應該沒有吧?!?/p>
面試官說:“確定沒有了嗎?”
我肯定地回答:“確定沒有了。”
面試官:“好吧,這個問題先到這。”
我有點不服氣,搶著問道:“您說說,還有什么可以優化的地方?”
面試官微笑了一下,說:“還可以利用之前計算出質數做整除就可以了,性能至少可以提升一倍?!?/p>
面試官在我寫的代碼上改了幾筆,就變成了:
public static List<Integer> findPrime(){ List<Integer> list = new ArrayList<>(100000); for (int n = 2; n < 1000000; n ) { boolean isPrime = true; int sqrt = (int) Math.sqrt(n); for (Integer i : list) { if (n % i == 0) { isPrime = false; break; } if (i > sqrt) { break; } } if (isPrime) { list.add(n); } } return list;}
我茅塞頓開,性能果然至少可以提升一倍,這次面試真的是學到了。
本故事純屬虛構,如有雷同實屬巧合。
歡迎分享轉載→http://www.avcorse.com/read-239207.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖