位置: IT常识 - 正文

前缀和与对数器与二分法(对数前面有符号怎么计算)

编辑:rootadmin
前缀和与对数器与二分法

推荐整理分享前缀和与对数器与二分法(对数前面有符号怎么计算),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前缀运算符,前缀计算法,对数前面有符号怎么计算,前缀求值,前缀算式的值怎么算,前缀匹配算法,对数前面有符号怎么计算,前缀求值,内容如对您有帮助,希望把文章链接给更多的朋友!

1. 前缀和

假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,我们该怎么快速的得出。 如果我们每次都遍历一遍累加这样就太慢了。我们可以开辟一个数组,把每个位置的和加在一起存进去。 如果我们要找的L到R中,L是0。那么[L,R]的和就为H[R],如果L不为0,那么[L,R]的和就为H[R]-H[L-1]。

这样我们找前缀和就会快很多。代码实现如下:

2. 对数器

假设我们有一个函数f1是生成1-5的随机数,我们怎么用它去设置1-7的随机数函数? 第一步:将这个1-5的随机数改成只有0,1对数器。 这里的意思是:如果是1和2那么就设置成0,如果是4和5就设置成1,如果是3就重新生成。

第二步:用0,1对数器改造一个0-7的随机函数。 我们调用三次f2,然后移位就能拥有000-111的一个取值范围。

第三步:用0-7的随机函数,对构造一个1-7的生成器。 我们也可以验证一下:

3. 二分查找

二分有两种写法,一种是右边是闭区间,一种是右边是开区间。这两种的写法也是有一些差别的。

前缀和与对数器与二分法(对数前面有符号怎么计算)

首先,说一下右边是闭区间: 如果右边是闭区间,那么right的下标就是n-1。 如果我们想查找8这个数,我们先算出第一个中间位置left+((right-left)>>1),这个等同于(left+right)/2。所以mid=5,下标5的数比8小,我们就left=mid+1,往后走一步。 我们再继续算mid=8,下标为8的数据是6比8小,mid继续+1。 继续算mid=10,下标10的数据是9比8大,所以让right=mid-1。 此时,left和right相等,继续查找。mid=9,下标9的数据是8,就查找到了。

代码实现: 右边是开区间: 如果右边是开区间,那么right就是n。 如果我们想要查找3,那么mid=(0+12)/2就是6,下标为6的数据是4,比3大,因为右边是开区间,如果我们还是right=mid-1,那么right就是5,5是开区间,就找不到3了。所以我们要让right=mid。 然后继续算mid=(0+6)/2,就为3。下标3的数是2比3小,就让left=mid+1。 继续算mid=(4+6)/2,就为5,下标为5的数据是3就找到了。 这里的循环条件是left<right就继续找,如果left==right就结束,因为是左闭右开,假设[5,5)就已经没有数据可以取了。

代码实现:

3.1 二分的变形3.1.1 第一种变形

在一个有序数组中,找>=某个数最左侧的位置。 如果我们要找>=3的最左侧的数,我们该怎么找呢?先找出mid=(0+10)/2,为5,下标为5的数据是4>=3,所以我们用index记录下标4。然后继续right=mid-1,继续二分。 mid=(0+4)/2,为2,下标为2的数据是2<3,index不变,让left=mid+1。 继续二分,mid=(3+4)/2,为3,下标为3的数是3>=3,将index改成3。然后让right=mid-1。 这样left和right都到下标3的位置,在继续二分一遍,下标还是3,让right=mid-1。然后left>right,循环结束。

代码实现:

找<=right的最右侧也是相同的道理:

3.1.2 第二种变形

我们要知道,有序一定二分,但不在有序的情况下,我们有时候也可以使用二分。 局部最小值问题:在一个无序数组里,正数,负数,0都可能存在,但是相邻的两个数一定不相等。然后给我返回一个局部最小的位置。 第一种情况:如果下标0位置上的数小于1位置上的数,就叫做局部最小。 第二种情况:如果下标N-1位置上的数小于N-2位置上的数,就叫做局部最小。 第三种情况:中间位置上的数,既要比左边小,也要比右边小,才叫局部最小。

思路: 如果前两种情况都不满足,说明它是这样的一共情况: 中间是相邻两个不相等的,所以中间一定有局部最小。我们先求出mid。 如果mid比mid-1的数据大。 说明左边一定存在局部最小,右边就不看了,直接去左边找。

如果mid比mid+1的数据大。 说明右边一定存在局部最小,左边就可以不看了。

当mid不比左变大也不比右边大,说明mid就是局部最小,这里我们也成功使用了二分法。

代码实现:

本文链接地址:https://www.jiuchutong.com/zhishi/298982.html 转载请保留说明!

上一篇:HTML 扫盲(html扫码功能)

下一篇:Js 中的定时器(js中的定时器)

  • 微信打不开怎么回事(微信打不开怎么办)

    微信打不开怎么回事(微信打不开怎么办)

  • iphone可以去掉运营商显示吗(iphone自带的运动)

    iphone可以去掉运营商显示吗(iphone自带的运动)

  • 苹果x声音从听筒出来怎么办(苹果x声音从听筒变小)

    苹果x声音从听筒出来怎么办(苹果x声音从听筒变小)

  • 微信安装显示应用未安装是怎么回事(安装微信显示应用未安装怎么办)

    微信安装显示应用未安装是怎么回事(安装微信显示应用未安装怎么办)

  • 网易云音乐tv版怎么弄(网易云音乐TV版怎么打开歌词)

    网易云音乐tv版怎么弄(网易云音乐TV版怎么打开歌词)

  • 打印机打一张隔一张(打印机打一张隔一会打一张)

    打印机打一张隔一张(打印机打一张隔一会打一张)

  • 录的视频怎样剪辑(录的视频怎样剪掉不想要的)

    录的视频怎样剪辑(录的视频怎样剪掉不想要的)

  • 华为mate30pro新手机第一次充电多长时间(华为mate30pro新手机多少钱)

    华为mate30pro新手机第一次充电多长时间(华为mate30pro新手机多少钱)

  • excel的工作薄是什么(excel工作薄是什么格式)

    excel的工作薄是什么(excel工作薄是什么格式)

  • iphonexs外放有杂音滋滋(iphonexs外放有破音声)

    iphonexs外放有杂音滋滋(iphonexs外放有破音声)

  • vivo手机的手电筒在哪(VIVO手机的手电筒在哪里)

    vivo手机的手电筒在哪(VIVO手机的手电筒在哪里)

  • 天猫精灵能远程监控吗(天猫精灵能远程监听吗)

    天猫精灵能远程监控吗(天猫精灵能远程监听吗)

  • 绿洲APP是干什么的(绿洲这个app)

    绿洲APP是干什么的(绿洲这个app)

  • 苹果13系统长截图怎么整(iphone 13 截长图)

    苹果13系统长截图怎么整(iphone 13 截长图)

  • 手机京东加好友步骤(手机版京东如何加好友)

    手机京东加好友步骤(手机版京东如何加好友)

  • 手机快手闪退怎么回事(快手闪退是什么情况)

    手机快手闪退怎么回事(快手闪退是什么情况)

  • ios13亮度自动调整在哪(ios13亮度自动调整没有了)

    ios13亮度自动调整在哪(ios13亮度自动调整没有了)

  • 苹果11代怎么激活(苹果11激活怎么激)

    苹果11代怎么激活(苹果11激活怎么激)

  • 华为p30有40瓦快充吗(华为p3040瓦快充)

    华为p30有40瓦快充吗(华为p3040瓦快充)

  • photon浏览器中文设置(photon浏览器中文版下载)

    photon浏览器中文设置(photon浏览器中文版下载)

  • 新华三路由器怎么设置(新华三路由器怎么登录)

    新华三路由器怎么设置(新华三路由器怎么登录)

  • CD-ROM盘有哪些特性(cd-rom是一种光盘存储器,其特点是___)

    CD-ROM盘有哪些特性(cd-rom是一种光盘存储器,其特点是___)

  • Win10教育版账号如何升级至专业版(win10教育版用户账户控制怎么取消)

    Win10教育版账号如何升级至专业版(win10教育版用户账户控制怎么取消)

  • 在一个JS文件中引用另一个JS文件中的变量(在一个js文件中怎么写)

    在一个JS文件中引用另一个JS文件中的变量(在一个js文件中怎么写)

  • Vue|内置指令(vue内置指令实验总结)

    Vue|内置指令(vue内置指令实验总结)

  • vue中 使用假的进度条数字插件:fake-progress(vue假数据)

    vue中 使用假的进度条数字插件:fake-progress(vue假数据)

  • 路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)(路径规划的基本流程和方法)

    路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)(路径规划的基本流程和方法)

  • 不动产租赁可以加计扣除吗
  • 工程项目罚款收入账务处理
  • 公司账户进账必须交税吗
  • 营业外收入怎么算增值税
  • 小规模纳税人季度多少免税
  • 技术成果投资入股企业所得税递延纳税备案表
  • 疫苗接种防疫站
  • 物业用房的装修费可以在土地增值税清算时扣除吗
  • 递延所得税如何计算
  • 加计扣除所得税怎么算
  • 负数发票作废了对原来的正数发票有什么影响
  • 长期合同收入与应收帐款如何处理?
  • 固定资产减值准备增加记哪方
  • 跨年度收入计算的增值税如何入账?
  • 营业执照印花税减免政策
  • 收到子公司分红需要交所得税吗?
  • 所得税季度报表营业外收入填哪
  • 福利费用不用计提
  • 旅行社成本票没有收到,怎么挂账
  • 进口增值税 海关
  • 加计扣除是什么优惠方式
  • 个人所得税征收计算方法
  • win11和win10哪个玩游戏好
  • 电脑屏幕突然黑屏怎么回事
  • 收到购买商品发票怎么做账
  • 公司购入二手设备 如何开具发票
  • 如何查看电脑是什么牌子
  • pos机刷卡怎么做账务处理
  • kjournald是什么进程
  • 收到招标费用会计分录
  • 费用扣除制度
  • 如何做架构规划图
  • 人工智能助力中国创新发展
  • 大前端最新
  • js防抖节流的区别和使用场景
  • 科目汇总表借方发生额为零怎么填
  • 中国烟草资产负债表
  • 建设项目财务费用包括
  • 不免征个人所得税的是个人转让著作权所得
  • 小企业会计准则调整以前年度费用分录
  • 酒吧会计如何做工作
  • 企业应付账款的借方余额反映的是
  • 可以公账户给私人转账吗
  • 国债收入要交企业所得税吗
  • 应收款和实收款区别
  • 防暑降温费怎么入账
  • 承兑汇票收据开什么发票
  • 公司前期装修费属于开办费吗
  • 进项税额大于销项税额期末留抵
  • 应付职工薪酬代扣社保
  • 成本费用会计分录
  • 建筑公司挂靠单位的财务处理是?
  • 接受捐赠财产净价值属于所有者权益吗
  • 现金支票存根联和正联怎么盖章
  • 加油票的发票抬头怎么写
  • 预缴税款的会计处理
  • 为什么需要会计信息
  • 长期股权投资损益调整怎么回事
  • solaris8+apache2+weblogic813+db2_82客户端+128 安装过程
  • ubuntu好看的字体
  • mac系统快速入门
  • win8屏幕分辨率显示不全
  • Win10打开或关闭系统图标里开怎么灰色的
  • LINUX下的磁盘编辑工具
  • 网站备份是什么意思
  • cocos2dx schedule
  • cocos2d-x安装
  • cocos2d开发app
  • ExtJS PropertyGrid中使用Combobox选择值问题
  • node文件目录
  • cocos2dx游戏开发
  • android事件分发流程图
  • css网页布局中注释是什么
  • 如何判断sma
  • nodejs bff
  • unity3D关于公共安全内容制作
  • 收到银行手续费发票怎么做分录
  • 双方交换住房可以吗
  • 国税局辽宁省国税局
  • 税务稽查的后果
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设