轉變陣列後最接近目標值的陣列和

2021-10-07 04:48:24 字數 964 閱讀 1500

leetcode演算法**演算法題

1.列舉+二分查詢

class solution

return ret;

}int findbestvalue(vector& arr, int target)

int l = 0, r = *max_element(arr.begin(), arr.end())/*目標陣列中最大值*/, ans = -1;

//二分法可以無限逼近目標值,可以根據值大於目標或者小於目標的情況,賦值而得到大於等於或者小於等於目標值的最接近的值

while (l <= r)

else

}//直到迴圈結尾,ans的值是最接近且小於等於目標值的value值,迴圈中ans一定會被賦值的

//而ans+1的值可能是最接近且大於或者等於目標值的value值

int choose_small = check(arr, ans);

int choose_big = check(arr, ans + 1);

return abs(choose_small - target) <= abs(choose_big - target) ? ans : ans + 1;

}};

3.很獨特的一種解法——c語言

int cmp(const void* c1, const void* c2)

int findbestvalue(int* arr, int arrsize, int target)

qsort(arr, arrsize, sizeof(int), cmp);

int sum = 0;

for (int i = 0; i < arrsize; i++)

else//否則返回小於得value值

}sum += arr[i];

}return arr[arrsize - 1];

}

1300 轉變陣列後最接近目標值的陣列和

給你乙個整數陣列 arr 和乙個目標值 target 請你返回乙個整數 value 使得將陣列中所有大於 value 的值變成 value 後,陣列的和最接近 target 最接近表示兩者之差的絕對值最小 如果有多種使得和最接近 target 的方案,請你返回這些整數中的最小值。請注意,答案不一定是...

力扣 1300 轉變陣列後最接近目標值的陣列和

給你乙個整數陣列 arr 和乙個目標值 target 請你返回乙個整數 value 使得將陣列中所有大於 value 的值變成 value 後,陣列的和最接近 target 最接近表示兩者之差的絕對值最小 如果有多種使得和最接近 target 的方案,請你返回這些整數中的最小值。請注意,答案不一定是...

1755 最接近目標值的子串行和

給你乙個整數陣列 nums 和乙個目標值 goal 你需要從 nums 中選出乙個子串行,使子串行元素總和最接近 goal 也就是說,如果子串行元素和為 sum 你需要 最小化絕對差 abs sum goal 返回 abs sum goal 可能的 最小值 注意,陣列的子串行是通過移除原始陣列中的某...