LintCode 二分查找
来源:互联网 发布:上海甲子网络怎么样 编辑:程序博客网 时间:2024/04/27 23:43
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
您在真实的面试中是否遇到过这个题? Yes
样例
给出数组 [1, 2, 2, 4, 5, 5].
对于 target = 2, 返回 1 或者 2.
对于 target = 5, 返回 4 或者 5.
对于 target = 6, 返回 -1.
class Solution {public: /** * @param A an integer array sorted in ascending order * @param target an integer * @return an integer */ int findPosition(vector<int>& A, int target) { // Write your code here int left = 0, right = A.size()-1; if (right < 0) { return -1; } int mid = (left + right)/2; while(left < right) { if(A[mid]<target){ left = mid +1; } if (A[mid]>=target) { right = mid; } mid = (left + right)/2; } return A[mid] == target ? mid:-1; }};
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
您在真实的面试中是否遇到过这个题? Yes
样例
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。
class Solution {public: /** * @param nums: The integer array. * @param target: Target number to find. * @return: The first position of target. Position starts from 0. */ int binarySearch(vector<int> &array, int target) { // write your code here int left =0, right = array.size()-1; int mid = (left + right)/2; if(right <0) { return -1; } while(left<right) { if (array[mid]<target) { left = mid +1; } if (array[mid] >=target) { right =mid; } mid =(left +right)/2; } //到此处。只是找到target。判断array[mid]前面的数是否为target if (array[mid] ==target){ for(int i=mid-1;i>=0;i--) { if(array[i] ==target) { mid =i; } } return mid; } else { return -1; } }};
阅读全文
0 0
- 二分查找-lintcode
- 二分查找-lintcode
- lintcode ----二分查找
- LintCode之二分查找
- lintcode:二分查找
- LintCode(easy)二分查找
- LintCode 14 二分查找
- LintCode : 二分查找
- LintCode-二分查找
- LintCode 二分查找
- lintcode:二分查找
- LintCode 二分查找
- lintcode 14. 二分查找
- Lintcode:二分查找
- Lintcode 14. 二分查找
- LintCode Binary Search 二分查找
- 二分查找——LintCode
- lintcode之经典二分查找
- c语言笔记——scanf函数
- NYOJ2350---彩排(技巧题,二进制进行桶排)
- C与C++的相互调用
- csuoj1970LXX数
- HDU5937Equation(暴搜+剪枝)
- LintCode 二分查找
- webpack的使用(2) ---- package.json详解
- Redis配置
- 深入理解机器学习:从理论到算法-习题全解之第十五章:支持向量机
- 直方图均衡化原理及其python代码实现
- HDU6053 TrickGCD(容斥原理)
- hadoop日常命令随笔记载
- Regular polygon
- ssm中项目性能的问题