如何在乙個集合中取乙個最接近某個數的數

2021-09-23 13:39:30 字數 1144 閱讀 5378

問題場景

思路**

有彩蛋哦!!!今天同事問了乙個問題,如何在乙個集合中取乙個最接近某個數的數,腦海各種演算法(揹包,圖論,動態規劃)在飄,讓我回想起了大二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 如果是要任一使用者登入後...