給你乙個整數陣列 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。這裡需...