国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝感市| 高阳县| 石渠县| 青川县| 长治县| 富阳市| 广南县| 崇礼县| 同江市| 凤阳县| 丰台区| 望城县| 黄冈市| 葵青区| 泸水县| 无棣县| 成安县| 平江县| 库伦旗| 垫江县| 藁城市| 吉安市| 黑水县| 新源县| 绍兴县| 施秉县| 雷山县| 洛阳市| 万安县| 南和县| 阿瓦提县| 洛宁县| 江西省| 舒兰市| 固原市| 永顺县| 井研县| 乐陵市| 汉寿县| 哈密市| 布尔津县|