跳跃游戏 最接近目标值的数组和
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);
}
}
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号