博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 34 Search for a Range(搜索范围)
阅读量:6228 次
发布时间:2019-06-21

本文共 2575 字,大约阅读时间需要 8 分钟。

翻译

给定一个整型已排序数组,找到一个给定值在其中的起点与终点。你的算法复杂度必须低于O(logn)。如果目标在数组中不会被发现,返回[-1, -1]。例如,给定[5, 7, 7, 8, 8, 10],目标值为8,返回[3, 4]。

原文

Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found in the array, return [-1, -1].For example,Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4].

代码

class Solution {public:    vector
searchRange(vector
&nums, int target) { vector
res; int l = 0, r = nums.size() - 1; if(nums.size() <= 0) { res.push_back(-1); res.push_back(-1); return res; } else if(nums.size() == 1) { if(nums[0] == target) { res.push_back(0); res.push_back(0); return res; } else { res.push_back(-1); res.push_back(-1); return res; } } while(l <= r) { if(nums[l] < target) { ++l; } if(nums[r] > target) { --r; } if(nums[l] == target && nums[r] == target) { res.push_back(l); res.push_back(r); return res; } } res.push_back(-1); res.push_back(-1); return res; }};

随手写的,虽然能通过,不过还是看看大神的解法来提高自己。

class Solution {private:    int binarySearchLow(vector
& nums, int target, int begin, int end) { if(begin > end) return begin; int mid = begin + (end - begin) / 2; if(nums[mid] < target) return binarySearchLow(nums, target, mid + 1, end); else return binarySearchLow(nums, target, begin, mid - 1); } int binarySearchUp(vector
& nums, int target, int begin, int end) { if(begin > end) return end; int mid = begin + (end - begin) / 2; if(nums[mid] > target) return binarySearchUp(nums, target, begin, mid - 1); else return binarySearchUp(nums, target, mid + 1, end); }public: vector
searchRange(vector
& nums, int target) { vector
res(2, -1); if(nums.empty()) return res; int high = binarySearchUp(nums, target, 0, nums.size() -1); int low = binarySearchLow(nums, target, 0, nums.size() - 1); if(high >= low) { res[0] = low; res[1] = high; return res; } return res; }};

转载地址:http://yvina.baihongyu.com/

你可能感兴趣的文章
MY-IMX6 Linux-3.14 测试手册(Qt版)
查看>>
js客户端UI框架
查看>>
【转】四元数(Quaternion)和旋转
查看>>
使用vue.js常见错误之一
查看>>
centos7配置openldap服务器
查看>>
bzoj 1500 修改区间 splay
查看>>
组合数打表法(1587: 爬楼梯)
查看>>
Symmetric Tree
查看>>
Oracle用户管理
查看>>
关于网络爬取(爬虫)01
查看>>
python re模块findall()详解
查看>>
MSTest
查看>>
java 给任务传递参数
查看>>
oracle之 反向键索引
查看>>
mysql+keepalived 双主热备高可用
查看>>
Hive之 hive的三种使用方式(CLI、HWI、Thrift)
查看>>
DOM基础总结
查看>>
微信公众平台源码
查看>>
Struts2--HelloWord
查看>>
linux C学习笔记05--信号量与共享内存(进程同步)
查看>>