跳跃游戏 最接近目标值的数组和

1306. 跳跃游戏 III

public boolean dfs(int[] arr, int start) {
    if(start < 0 || start >= arr.length || arr[start] == -1) return false;**后面是对star也就是index改变**
    int step = arr[start];
    arr[start] = -1;**来过了,不需要重蹈覆辙**
    return step == 0 || dfs(arr, start + step) || dfs(arr, start - step);
}

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

Arrays.sort(arr);
int n = arr.length;
int[] num = new int[n + 1];
for(int i = 1; i <= n; i++) {
num[i] = num[i - 1] + arr[i - 1];当前位置存储的是,对应index - 1之前的元素之和
}
int r = arr[n - 1];
int ans = 0;
int diff = target;直接暴力
for(int i = 1; i <= r; i++) {左 = 1, 右 = 数组中最大值
int index = Arrays.binarySearch(arr, i);
if(index < 0) {
index = - index - 1;
}
int cur = num[index] + (n - index) * i;
if(Math.abs(cur - target) < diff) {
ans = i;
diff = Math.abs(cur - target);
}
}

posted on 2022-11-16 16:34  xtdnn  阅读(18)  评论(0)    收藏  举报

导航