1. 程式人生 > 實用技巧 >1521. 找到最接近目標值的函式值

1521. 找到最接近目標值的函式值

參考https://space.bilibili.com/3203291/零神的題解

class Solution {
public:
    int closestToTarget(vector<int>& arr, int target) {
        int ans = abs(arr[0] - target);
        vector<int> valid = {arr[0]};
        for (int num: arr) {
            vector<int> validNew = {num};
            ans 
= min(ans, abs(num - target)); for (int prev: valid) { validNew.push_back(prev & num); ans = min(ans, abs((prev & num) - target)); } validNew.erase(unique(validNew.begin(), validNew.end()), validNew.end()); valid
= validNew; } return ans; } };
class Solution {
    public int closestToTarget(int[] arr, int target) {
        HashSet<Integer> cur = new HashSet<>();
        int min = Integer.MAX_VALUE;
        for(int i : arr){
            HashSet<Integer> cur2 = new HashSet<>();
            cur2.add(i);
            min 
= Math.min(min,Math.abs(target-i)); for(int j : cur){ int val = j&i; cur2.add(val); min = Math.min(min,Math.abs(target-val)); } cur = cur2; } return min; } }