Re: [問題] 1-42取出6+1個數字

看板java作者 (遙遠的旅人)時間19年前 (2006/07/22 01:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串17/21 (看更多)
1-42 取 7用set 的 Contains判斷不取重複可能還好。 1-20000 取 10000呢?你很快就會覺得是不是掉進無窮回圈當中了。 (如果你不幸用遞迴寫,哪很快就會stack Over Flow了。) 之前Trace JDK程式碼時有看到一個好方法給大家參考。 原理如下: 假設陣列長度n,隨機取m個。 for(int i = arr.length-1;i>=0;i--) { int randPosition = Random.getInt(i);//取得0~i之間的隨機整數。 Swap(arr[i], arr[randPosition]);//替換值。 } return arr[0]~ arr[m-1]; 不考慮Random的實作效能的話,程式效率為O(n)。 -- JAVA 是一個靜態型別reference指定、強物件型別判定的語言。 屬於類C/C++族。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.85.116.116
文章代碼(AID): #14mH5qMd (java)
討論串 (同標題文章)
文章代碼(AID): #14mH5qMd (java)