给定一个按照升序排列的整数数组num,和一个目标值目标。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是O (log n)级别。
如果数组中不存在目标值,返回[1].
示例1:
输入:num=(5、7、7、8、8、10],目标=8
输出:[3,4]
代码实现
<人力资源/><代码>{类解决方案 公众: int left_index (vector和num, int目标) { int开始=0; int结束=nums.size () - 1; 而(开始& lt;=结束) { int中期=(开始+结束)/2; 如果(num(中期)==目标) { 如果(中期==0 | | num[1]中期& lt;目标) { 返回中期; } 中期结束=1; } else if(目标& lt;num[中]) { 中期结束=1; } else if(目标比;num[中]) { 中期开始=+ 1; } } 返回1; } int right_index (vector 和num, int目标) { int开始=0; int结束=nums.size () - 1; 而(开始& lt;=结束) { int中期=(开始+结束)/2; 如果(num(中期)==目标) { 如果(==nums.size中期()- 1 | | num[中期+ 1]比;目标) { 返回中期; } 中期开始=+ 1; } else if(目标& lt;num[中]) { 中期结束=1; } else if(目标比;num[中]) { 中期开始=+ 1; } } 返回1; } vector searchRange (vector 和num int目标){ vector 结果; result.push_back (left_index (num、目标)); result.push_back (right_index (num、目标)); 返回结果; } };代码>