把陣列值一部分變大最接近目標值的值

2021-10-07 04:31:49 字數 1199 閱讀 5663

給你乙個整數陣列 arr 和乙個目標值 target ,請你返回乙個整數 value ,使得將陣列中所有大於 value 的值變成 value 後,陣列的和最接近 target (最接近表示兩者之差的絕對值最小)。

如果有多種使得和最接近 target 的方案,請你返回這些整數中的最小值。

請注意,答案不一定是 arr 中的數字。

示例 1:

輸入:arr = [4,9,3], target = 10

輸出:3

解釋:當選擇 value 為 3 時,陣列會變成 [3, 3, 3],和為 9 ,這是最接近 target 的方案。

示例 2:

輸入:arr = [2,3,5], target = 10

輸出:5

示例 3:

輸入:arr = [60864,25176,27249,21296,20204], target = 56803

輸出:11361

陣列、分析之後上下界

目標有邊界,當value等於陣列中最大的數時,value再增加已經沒有意思,下邊界是0,因為如果是負數,所有都變成負數之後,與target的差值只會越來越大,所以value在範圍內取得,思路一,列舉,思路二:二分,就在下界和上界之間二分查詢,

指定乙個mid值之後,

1、就遍歷陣列計算此時的和,與target作比較,決定後面往哪個方向二分,

2、把和寫成子函式的形式呼叫,更方便讀懂,

二分的框架

少用全域性變數

如果多次用到就用變數存起來,如那個調回來的和

class

solution

return sum;}}

;int

findbestvalue

(vector<

int>

& arr,

int target)

if(tarval==

abs(val-target)

&& res> mid) res=mid;

if(val// 和小,往右邊找

else

if(val>target)

// 和大,往左邊找,

else

// 相等時候直接返回結果

return mid;

}return res;

}

PHP函式下 陣列一部分

記住,兄弟們,常量沒用作用域,只有變數才有哈 我們來聊一下靜態區域性變數 靜態區域性變數首先他是乙個區域性變數,然後被關鍵字static修飾 讓靜態區域性變數銷毀會兩種途徑,第一 使用unset函式。第二 這個.php檔案執行完畢後銷毀 而普通的區域性變數是這個所在函式執行完之後就自動銷毀。普通的變...

後端返回URL某一部分的值

1.從這裡輸入公司名字,獲取企業黃頁資訊 2.輸入關鍵字後,後端會返回拼湊的url後半部分,根據js 我們可以通過以下辦法獲取到完整的url import requests url ashx bianma.ashx data response requests.post url,data data,...

演算法知識梳理 4 陣列第一部分

在乙個二維陣列中,每一行都按照從左到右遞增的順序,每一列都按照從上到下遞增的順序排序,編寫乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷該整數是否在二位陣列中。首先要確定整數存在於陣列的乙個前提條件 如果最小的元素 左上角 大於d,或者最大的元素 右下角 小於d,那麼可以確定矩陣中不存在d。這裡需...