LeetCode 1300. 转变数组后最接近目标值的数组和

2021-05-13 12:29

阅读:434

标签:目标   mat   题目   ems   new   下标   组元   ndis   arc   

1300. 转变数组后最接近目标值的数组和

这个题是昨天的每日一题,昨天太忙了,没来得及写完。但是有了思想,本地上跑了几次发现跑出来的答案又误差就溜掉了。
今天有空了就来填一下坑。

class Solution {
    public int findBestValue(int[] arr, int target) {
        //先进行排序,取得搜索的边界,边界就是0到数组元素中的最大值
        Arrays.sort(arr);
        //这个前缀和数组还是非常重要的,这个长度一定要多一,否则就会像之前做的一样搜出来的值不对。
        int[] prefixSum = new int[arr.length + 1];
        //计算前缀和数组
        for(int i = 1; i = target){
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return right;
    }
}

有个很奇怪的地方,自己写的反而不如直接调用系统库中的Arrays.binarySearch()方法快。醉了
说起二分查找 ,这个题的确有点像我之前做过的二分查找变种题,具体请看这里
不过这个题还有更快的方法,就是双重二分查找,我昨天第一次写的时候就是双重二分查找,对于我们寻找的ans进行二分查找,然后在循环体内查找当前可能的答案在arr数组中的位置,等到有时间了我再来补上这个坑。

LeetCode 1300. 转变数组后最接近目标值的数组和

标签:目标   mat   题目   ems   new   下标   组元   ndis   arc   

原文地址:https://www.cnblogs.com/ZJPaang/p/13129813.html

上一篇:v-for列表排序

下一篇:Python编码问题


评论


亲,登录后才可以留言!