返回顶部
首页 > 资讯 > 精选 >android整数二分模板怎么解决边界问题
  • 533
分享到

android整数二分模板怎么解决边界问题

2023-06-22 04:06:07 533人浏览 独家记忆
摘要

本篇内容主要讲解“Android整数二分模板怎么解决边界问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android整数二分模板怎么解决边界问题”吧!1.区间 //区间分为[l,m

本篇内容主要讲解“Android整数二分模板怎么解决边界问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android整数二分模板怎么解决边界问题”吧!

1.区间

 //区间分为[l,mid]和[mid+1,r],如下,x<=a[mid]的判断条件,使得x要么在[l,mid],要么[mid+1,r]//最终l会等于r     while(l<r)        {            int mid=l+r>>1;            if(a[mid]>=x)r=mid;            else l=mid+1;        } //区间分为[l,mid-1]和[mid,r],如下,x>=a[mid]的判断条件,使得x要么在[l,mid-1],要么[mid,r]        while(l<r)        {            int mid=l+r+1>>1;            if(a[mid]<=x)l=mid;//不加1死循环条件            else r=mid-1;        }
  • 当一个单调区间中有连续多个x时候,第一个模板会取到最左边那个x下标,因为x==a[mid]时候是边界向左压缩。同理,第二个取到最右边的x下标

  • 第二个模板算mid要+1因为区间长度为2时,mid算出来等于l,而第二个模板存在死循环条件:mid给l赋值。

2.例题

01:查找最接近的元素

总时间限制:  1000ms 内存限制: 65536kB

描述:

在一个非降序列中,查找与给定值最接近的元素。

输入:

  • 第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。

  • 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。

  • 第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。

接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。
输出
m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。

样例输入:

3
2 5 8
2
10
5

样例输出:

8
5

AC代码:

#include <iOStream>using namespace std;const int N=1e5+5;int n,a[N],m,x,l,r,i;bool check(int u){ //下面两种判断条件都可以 //if(a[u]>=x||a[u]<x&& (x-a[u])<=(a[u+1]-x))return true; //return false; if(a[u]<x&&(x-a[u])>(a[u+1]-x))return false; return true;}int main(){    cin>>n;    for(i=0;i<n;++i)cin>>a[i];    cin>>m;    while(m--)    {     cin>>x;     l=0,r=n-1;     //二分就是考虑什么时候向左压缩什么时候向右压缩      while(l<r)     {      int mid=l+r>>1;//因为mid是下取整,所以mid 永远不会取到初始的右边界       //同理,第二个模板永远不会取到初始的左边界      if(check(mid))r=mid;//满足条件就向左边压缩       else l=mid+1;//向右边压缩      }     cout<<a[l]<<endl;    }    return 0;}

到此,相信大家对“android整数二分模板怎么解决边界问题”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: android整数二分模板怎么解决边界问题

本文链接: https://lsjlt.com/news/302303.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • android整数二分模板怎么解决边界问题
    本篇内容主要讲解“android整数二分模板怎么解决边界问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android整数二分模板怎么解决边界问题”吧!1.区间 //区间分为[l,m...
    99+
    2023-06-22
  • android整数二分模板彻底解决边界问题
    目录1.区间2.例题01:查找最接近的元素1.区间 //区间分为[l,mid]和[mid+1,r],如下,x<=a[mid]的判断条件,使得x要么在[l,mid],要么...
    99+
    2024-04-02
  • 详解Swoole TCP流数据边界问题解决方案
    目录1. 数据发送过程2. 什么是数据边界2.1 代码演示3.EOF 解决方案3.1 open_eof_check3.2 open_eof_split3.3 open_eof_che...
    99+
    2024-04-02
  • 怎么解决vue父子模板传值问题
    这篇文章主要为大家展示了“怎么解决vue父子模板传值问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么解决vue父子模板传值问题”这篇文章吧。具体如下:&l...
    99+
    2024-04-02
  • 怎么解决PHP大整数问题
    这篇文章主要介绍“怎么解决PHP大整数问题”,在日常操作中,相信很多人在怎么解决PHP大整数问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决PHP大整数问题”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • C++访问者模式模板函数无法重载的问题解决
    目录背景 解决方案 最终代码 背景 最近遇到一个比较棘手的场景,我们有一堆模块,他们有一个通用的基类,我们不防假设为 BaseClass,该类有一些通用的结构以及需要重载的方法。这...
    99+
    2024-04-02
  • php二维数组排序问题怎么解决
    本篇内容主要讲解“php二维数组排序问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php二维数组排序问题怎么解决”吧!php二维数组排序测试数据   &...
    99+
    2023-07-05
  • element-ui侧边栏router问题怎么解决
    这篇文章主要介绍了element-ui侧边栏router问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇element-ui侧边栏router问题怎么解决文章都会有所收获,下面我们一起来看看吧。ele...
    99+
    2023-06-30
  • win7主板常见问题怎么解决
    这篇文章主要讲解了“win7主板常见问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win7主板常见问题怎么解决”吧!win7进入主板bios设置的方法我们在进入bios设置的时候...
    99+
    2023-07-01
  • Python整数问题怎么理解
    本篇内容主要讲解“Python整数问题怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python整数问题怎么理解”吧!在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较...
    99+
    2023-06-17
  • Android模版制作的常见问题怎么解决
    今天小编给大家分享一下Android模版制作的常见问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。为什么在后台添加...
    99+
    2023-06-26
  • 如何解决C++访问者模式模板函数无法重载的问题
    本篇内容主要讲解“如何解决C++访问者模式模板函数无法重载的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决C++访问者模式模板函数无法重载的问题”吧!背景最近遇到一个比较棘手的场景,...
    99+
    2023-06-22
  • Android的Toast问题怎么解决
    这篇“Android的Toast问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android的Toast问题怎么...
    99+
    2023-06-04
  • android中FLAG_ACTIVITY_NEW_TASK问题怎么解决
    在Android中,FLAG_ACTIVITY_NEW_TASK标志用于启动一个新的任务栈。如果出现FLAG_ACTIVITY_NE...
    99+
    2023-08-19
    android
  • 怎么解决Struts Hibernate的整合问题
    这篇文章主要介绍“怎么解决Struts Hibernate的整合问题”,在日常操作中,相信很多人在怎么解决Struts Hibernate的整合问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决Str...
    99+
    2023-06-17
  • PHP整数取余返回负数的问题怎么解决
    本篇内容介绍了“PHP整数取余返回负数的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP语言虽然功能强大,但并不代表其没有缺...
    99+
    2023-06-17
  • 怎么解决php界定符报错问题
    这篇文章跟大家分析一下“怎么解决php界定符报错问题”。内容详细易懂,对“怎么解决php界定符报错问题”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“怎么解决php界定符报错问题”...
    99+
    2023-06-28
  • mybatis无参数分页问题怎么解决
    当使用MyBatis进行无参数分页查询时,可以通过在SQL查询语句中使用LIMIT关键字来实现分页。具体步骤如下:1. 在Mappe...
    99+
    2023-08-09
    mybatis
  • PHP超出整型数据相加问题怎么解决
    这篇“PHP超出整型数据相加问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP超出整型数据相加问题怎么解决”文...
    99+
    2023-07-06
  • android handler移除问题怎么解决
    要解决Android Handler移除问题,可以参考以下几个步骤:1. 在使用Handler的Activity或Fragment的...
    99+
    2023-10-18
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作