国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LintCode 14 二分查找

2019-11-08 18:34:47
字體:
來源:轉載
供稿:網友

題目:binarySearch


要求:

給定一個排序的整數數組(升序)和一個要查找的整數target,用O(logn)的時間查找到target第一次出現的下標(從0開始),如果target不存在于數組中,返回-1。

樣例:

在數組 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。

算法要求:

如果數組中的整數個數超過了2^32,你的算法是否會出錯?

解題思路:

在有序的數組中 ,直接從中間開始找,如果比中間值小,則將high = mid - 1,如果比中間值打,則將low = mid + 1,如果相等,還需要檢測其mid前一個是否也為目標值,需要返回第一個相同值的位置。

算法如下:

int binarySearch(vector<int> &array, int target) { // write your code here int low = 0; int high = array.size(); int mid; while (low <= high) { mid = (low + high) / 2; if (array[mid] > target) { high = mid - 1; } else if (array[mid] < target) { low = mid + 1; } else { while (array[mid] == target) { mid--; } return mid + 1; } } return -1; }
上一篇:DOS命令

下一篇:KMP

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 格尔木市| 交城县| 确山县| 长岛县| 长汀县| 武夷山市| 新蔡县| 噶尔县| 越西县| 安乡县| 莎车县| 松阳县| 崇州市| 皋兰县| 岳普湖县| 清丰县| 汉中市| 寿阳县| 阿尔山市| 郯城县| 阿巴嘎旗| 丁青县| 临邑县| 萨迦县| 巴林右旗| 肃南| 高安市| 云南省| 新兴县| 元朗区| 汝阳县| 阳山县| 广宗县| 克什克腾旗| 信阳市| 广宁县| 山西省| 峨边| 巢湖市| 南郑县| 红河县|