程序员面试金典——11.3元素查找

Solution1:我的答案
二分查找,貌似不咋好啊

class Finder {
public:int findElement(vector<int> A, int n, int x) { //二分法// write code here、if(n <= 0)return -1;int low = 0, high = n - 1;return BinarySearch(A, low, high, x);}int BinarySearch(vector<int> &A, int low, int high, int x) {int mid = (low + high)/2;if(low > high) //递归终止return 0;if(A[mid] == x) //答案return mid;else {return BinarySearch(A, low, mid - 1, x)+ BinarySearch(A, mid + 1, high, x);}}
};

Solution2:
加强版二分查找
参考网址:https://www.nowcoder.com/profile/1982673/codeBookDetail?submissionId=17308116
这个思路要学习一个啊

二分查找的加强版,主题思路还是二分,再加上一些限制条件
int findElement(vector<int> A, int n, int x) {int i=0,j=n-1,mid;//由于移位了,但移位之后,中间元素的左右两边必定有一边是升序的while(i<=j) {mid=(i+j)/2;if(A[mid]==x)return mid;if(A[mid]<x) {//A[mid]<A[left] 说明右边是有序的,且x>A[right]说明x在mid左边if(A[mid]<A[i]&&x>A[j]) j=mid-1;else i=mid+1;}else {//A[mid]>A[left]说明左边是有序的,且x<A[left],说明x在mid右边if(A[mid]>A[i]&&x<A[i]) i=mid+1;else j=mid-1;}}return -1;
}

程序员面试金典——11.3元素查找相关推荐

  1. 程序员面试金典——11.6矩阵元素查找

    程序员面试金典--11.6矩阵元素查找 Solution1:我的答案.和剑指offer上的题目类似,复杂度是O(m+n)O(m+n)O(m+n). class Finder { public:vect ...

  2. 【动态规划】程序员面试金典——11.7叠罗汉I

    程序员面试金典--11.7叠罗汉I 首先我来批判一下这个题目出的真是不咋滴,后来的人按理说应该在上面.但此题的意思是求最长递增子序列,即后来的人在下面,完全是为了出题而出题... 参考博客: [1]h ...

  3. 【To Do!】程序员面试金典——11.8维护x的秩

    程序员面试金典--11.8维护x的秩 Solution1:我的答案.垃圾算法... class Rank { public:vector<int> getRankOfNumber(vect ...

  4. 程序员面试金典——11.5找出字符串

    程序员面试金典--11.5找出字符串 Solution1:我的答案.加强版的二分查找,嘿嘿嘿 class Finder { public:int findString(vector<string ...

  5. 程序员面试金典——11.2变位词排序

    程序员面试金典--11.2变位词排序 Solution1: 参考网址:https://www.nowcoder.com/profile/845063/codeBookDetail?submission ...

  6. 程序员面试金典——番外篇之下一个较大元素II

    程序员面试金典--番外篇之下一个较大元素II Solution1:我的答案,时间复杂度为O(n2)O(n2)O(n^2) 垃圾算法 class NextElement { public:vector& ...

  7. 【程序员面试金典】面试题 10.11. 峰与谷

    [程序员面试金典]面试题 10.11. 峰与谷 题目描述 解题思路 题目描述 描述:在一个整数数组中,"峰"是大于或等于相邻整数的元素,相应地,"谷"是小于或等 ...

  8. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  9. 【To Do】程序员面试金典——18.11最大子方阵

    程序员面试金典--18.11最大子方阵 Solution1:我的答案.最笨的方法,时间复杂度是O(n3)O(n3)O(n^3) class SubMatrix { public:int maxSubM ...

最新文章

  1. Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索
  2. 2011年GALGAME不朽巨作推荐
  3. 蓝桥杯 历届试题 合根植物(并查集)
  4. java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
  5. macpro台式计算机,Mac Pro正式上架 真的可以用来刨土豆丝
  6. LeetCode 1152. 用户网站访问行为分析
  7. 图形化c语言编程,「分享」C语言如何编写图形界面
  8. 从BIO、NIO到Netty
  9. cad 打开硬件加速卡_老司机手把手带你解决,各种CAD疑难杂症
  10. Linux两种方式rd.break和init重置root管理员密码
  11. Visual Studio IDE下载地址
  12. MapReduce过程卡在reduce处的67%
  13. linux恢复表数据,Linux恢复误删的数据
  14. python 矩阵特征值分解_特征值分解和奇异值分解
  15. php怎么做地图源代码,php直播源码百度地图坐标拾取系统自定义页面
  16. LINUX中DNS服务器反向解析
  17. 对待事物,乐观积极。
  18. Python避免缩进错误
  19. 【杂记】火狐浏览器主页被2345恶意篡改解决方法
  20. .pnmrc和.vuerc和.yarnrc等等文件

热门文章

  1. Automatic Brain Tumor Segmentation using Cascaded Anisotropic Convolutional Neural Networks
  2. 多分类支持向量机及其Python实现
  3. 计算机桌面锁定了没设密码怎么解锁,电脑桌面锁屏怎么设置,电脑怎么给手机解锁...
  4. 动态新增表字段_国际法规 | 欧盟POPs法规更新新增三氯杀螨醇、修订PFOS的豁免——北测集团...
  5. python sendto(右键发送文件到执行的bat)功能的实现
  6. neo4j 查询同一节点的两个上级_手把手教你快速入门知识图谱 - Neo4J教程
  7. 黑莓 os6 html5,黑莓OS 6内置浏览器HTML5性能超越其他平台
  8. java多线程_Java多线程
  9. python map函数_Python map()函数
  10. python 技能清单_Python清单