- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 hackerearth 上练习一道题:
在这个问题中,我写了一个二进制搜索代码,我用过的地方:
int mid=(low+high)/2
我的循环卡在这里,所以在某些情况下我得到了 TLE。意识到问题后(选择了反复低的)我将 mid 更改为 low +(high-low+1)/2 并更改了整个测试用例通过。(代码 1)
我也做过类似的问题,我使用了 (low+high)/2 并且也通过了所有测试用例。
我的问题是我们如何决定我们将如何选择中间?
PS:这些是练习题,现在(由我)解决了
public static boolean subarray(int mid,long x,long[] sum,int[] a){
int n=a.length;
for(int i=0;i<n-mid+1;i++){
if(sum[mid+i-1]-sum[i]+a[i]>x){
return false;
}
}
return true;
}
public static void binarysearch(long[] sum,int [] a,long x){
int low=1;
int high=a.length;
while(low!=high){
int mid=low+ (high-low+1)/2; //passed
//int mid=(low+high)/2; did n't PASS
if(!subarray(mid,x,sum,a)){//if some greater then x
high=mid-1;
}
else{
//if some less then x okay but can go for more
low=mid;
}
}
System.out.println(low);
}
public static long binarysearch(long[] a,long x,long[] L,long[] R){
//find first index >= x
BufferedOutputStream out=new BufferedOutputStream(System.out);
int low=0;
int high=a.length;
while(low!=high){
int mid=(low+high)/2;
if(a[mid]<x){
low=mid+1;
}
else{
high=mid;
}
}
long ans=L[low]+x-1;
if(low!=0){
ans=L[low]+x-a[low-1]-1;
}
return ans;
}
最佳答案
这种技术:
low + (high - low) /2
主要用于避免整数溢出。
由于 mid 是数字类型的实例,因此它可以容纳的值有上限。 low 和 high 的总和可能会超过此最大值,从而导致溢出和不可预测的结果。即使 low 和 high 都是合法值(即正值和 high >= low),也会发生这种情况。
对于 high 和 low 的合法值,表达式 mid = low + (high - low)/2 永远不会溢出,并且始终会给出所需的结果。
例子:
int low = 1170105034
int high = 1347855270
(low + high) / 2 //outputs -888503496
low + (high - low) / 2 //outputs 1258980152
关于algorithm - 在二进制搜索中确定中间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50803216/
我是 Javascript 的新手。由于一些遗留系统,目前我正在将一些 ES6 代码转换回 ES5 代码。我转换了以下代码: $row.find('.gridCellDetailAction') .
这是我的父类,它有 trigger 方法,即 public 方法: class BaseEffect { //properties and contructor... //other
我正在关注构建你的第一个区 block 链教程 (https://www.youtube.com/watch?v=coQ5dg8wM2o&t=494s)。 我的 index.html 中有以下内容:
我是一个使用 ScrollMagic 的菜鸟,并尝试通过复制 ScrollMagic 的示例之一来学习。 http://scrollmagic.io/examples/advanced/advance
需要帮助调试一小段脚本。 我使用“masonry”插件以平铺方式排列多个 div。该脚本似乎工作正常,除了我收到错误 jQuery (intermediate value).imagesLoaded
我使用 jQuery Autosize 插件: http://www.jacklmoore.com/autosize/ 您可以在此处看到脚本本身: http://www.jacklmoore.com/
我必须遵循以下关系: class Course true, :id => false do |t| t.integer :user_id t.integer :course_id t.i
我的路线是这样的 import express from 'express' import mysql from 'mysql2' import { dbusername } from '../con
我正在尝试使用 Chart Js 库生成圆环图,结果抛出错误 Uncaught TypeError: (intermediate value).Doughnut is not a function。我
我在一个名为 StructureWindowComponent 的组件中实现事件处理,并且在 LeggerStructureWindowComponent 中也有一个覆盖它。 在基类(Structur
问题:我想将使用 xlsx 的条件格式 icon_set 应用于列,但没有获得正确值的正确箭头 这是我想要的输出: 这是我当前的输出: 这是我的代码: writer.sheets[sheet].con
这是我的 webpack.config.js "use strict"; var webpack = require('webpack') module.exports = { entry:
请帮助我。当我在 ASP.NET MVC 中使用 jQuery 时出现错误。 Uncaught TypeError: ((x.event.special[i.origType] || (interme
我是一名优秀的程序员,十分优秀!