日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

面试金典--11.5

發(fā)布時(shí)間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试金典--11.5 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述:給定排序后的字符串?dāng)?shù)組,中間有一些空串,要求找到給定字符串的位置

思路:

(1)遍歷,最慢的

(2)二分查找,當(dāng)mid處為空串,就找到最近的非空串繼續(xù)尋找。如果需要找空串?(單獨(dú)處理)

1 #include <iostream> 2 #include <queue> 3 #include <climits> 4 #include <algorithm> 5 #include <memory.h> 6 #include <stdio.h> 7 #include <ostream> 8 #include <vector> 9 #include <list> 10 #include <cmath> 11 #include <string> 12 #include <stdexcept> 13 #include <stack> 14 #include <map> 15 using namespace std; 16 17 int fun(vector<string> a,string target) 18 { 19 int l = 0; 20 int r = a.size() - 1; 21 while(l <= r) 22 { 23 int mid = (l+r)/2; 24 if(a[mid] == target) 25 { 26 return mid; 27 } 28 else if(a[mid] == "") 29 { 30 int k = mid + 1; 31 while(k <= r) 32 { 33 if(a[k] != "") 34 break; 35 } 36 if(k <= r) 37 { 38 if(a[k] == target) 39 { 40 return k; 41 } 42 else if(a[k] > target) 43 { 44 r = k - 1; 45 } 46 else if(a[k] < target) 47 { 48 l = k + 1; 49 } 50 } 51 else 52 { 53 k = mid - 1; 54 while(k >= l) 55 { 56 if(a[k] != "") 57 break; 58 } 59 if(k >= l) 60 { 61 if(a[k] == target) 62 { 63 return k; 64 } 65 else if(a[k] > target) 66 { 67 r = k - 1; 68 } 69 else if(a[k] < target) 70 { 71 l = k + 1; 72 } 73 } 74 else 75 return -1; 76 } 77 } 78 else if(a[mid] > target) 79 { 80 r = mid - 1; 81 } 82 else if(a[mid] < target) 83 { 84 l = mid + 1; 85 } 86 } 87 } 88 89 int main() 90 { 91 vector<string> input; 92 input.push_back("at"); 93 input.push_back(""); 94 input.push_back(""); 95 input.push_back(""); 96 input.push_back("ball"); 97 input.push_back(""); 98 input.push_back(""); 99 input.push_back("car"); 100 input.push_back(""); 101 input.push_back(""); 102 input.push_back("dad"); 103 input.push_back(""); 104 input.push_back(""); 105 cout<<fun(input,"ball")<<endl; 106 return 0; 107 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/cane/p/3810769.html

總結(jié)

以上是生活随笔為你收集整理的面试金典--11.5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。