問題場景
思路**
有彩蛋哦!!!今天同事問了乙個問題,如何在乙個集合中取乙個最接近某個數的數,腦海各種演算法(揹包,圖論,動態規劃)在飄,讓我回想起了大二acm演算法競賽期間的生活。acm真的是讓我又愛又恨;愛,當你掌握一種演算法ac出題目的時候是真的爽;恨,演算法是真的難理解;當時還想著打遊戲,打籃球,兼職賺錢,一直沒有認真系統的學習演算法導致一知半解,參加競賽也沒有獲得好名次,現在再提起演算法就忘的一乾二淨了,真是書到用時方恨少啊。
將集合排除,剔除重複資料,二分查詢,向差值小的方向移動
不知道是否還有更好的思路,請指教
public
static
void
main
(string[
] args)
; system.out.
println
(find
(number,
0, number.length-1,
1, c));
}public
static integer find
(integer[
] number, integer start, integer end, integer k, integer c)
//如果只剩兩個 返回最小的那個
if(math.
abs(start-end)==1
)int midle =
(start + end)/2
; integer left =number[midle-1]
; integer right = number[midle+1]
;int rightsub = math.
abs(right- k)
;int leftsub = math.
abs(left - k)
;//如果左邊差值 比 右邊差值 小 遞迴左半部分
if(leftsub < rightsub)
//如果右邊差值 比 左邊差值 小 遞迴右半部分
if(rightsub < leftsub)
//如果陣列中的值 沒有重複的 這個情況不可能發生
return1;
}
查詢組成乙個偶數最接近的兩個素數
任意乙個偶數 大於2 都可以由2個素數組成,組成偶數的2個素數有很多種情況,本題目要求輸出組成指定偶數的兩個素數差值最小的素數對 輸入描述 輸入乙個偶數 輸出描述 輸出兩個素數 首先將偶數除2分別儲存在left和right中,之後判斷是否為素數,若是則直接輸出 若不是,left減1,right加1,...
如何在 Linux 中查詢乙個檔案
對於新手而言,在 linux 中使用命令列可能會非常不方便。沒有圖形介面,很難在不同資料夾間瀏覽,找到需要的檔案。本篇教程中,我會展示如何在 linux 中查詢特定的檔案。第一步要做的是通過 ssh 連線到你的 linux 在 linux 中查詢檔案有兩種方法。一種是使用find命令,另外一種是使用...
如何在linux中執行乙個指令碼
如果是開機馬上執行的指令碼,可以將指令碼寫到rc.local中 如果是使用者登入後自動執行指令碼,可以將指令碼寫到相應的使用者目錄下 bash profile 若指令碼 bash profile 不存在,可以直接拷貝 etc profile 命名為 bash profile 如果是要任一使用者登入後...