LeetCode(34)--Search for a Range
来源:互联网 发布:电脑笔记软件 知乎 编辑:程序博客网 时间:2024/06/03 19:05
题目要求是:给定一个整型已排序数组,找到一个给定值在其中的起点与终点。
你的算法复杂度必须低于O(logn)。如果目标在数组中不会被发现,返回[-1, -1]。
例如,给定[5, 7, 7, 8, 8, 10],目标值为8,返回[3, 4]。
这道题思路也比较简单,大致思路如下:首先利用二分法找到等于target值的数,然后访问这个数的前面和后面,找到所有与target值相等的数,并记录下区间两端的索引值。返回区间的索引值即为结果。
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> res; if (nums.size() == 0) { res.push_back(-1); res.push_back(-1); return res; } 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;} } int l = 0, r = nums.size() - 1; while (l <=r) { int mid = (r - l) / 2 + l; if (nums[mid] == target) { int left = mid; int right = mid; while ((left-1)>=0&&(nums[left - 1] == target)) left--; while ((right+1)<=(nums.size()-1)&&(nums[right + 1] == target)) right++; res.push_back(left); res.push_back(right); return res; } if (nums[mid] < target) { l = mid + 1; } else{ r = mid - 1; } } res.push_back(-1); res.push_back(-1); return res; }};
阅读全文
0 0
- LeetCode(34)Search for a Range
- [LeetCode] Search for a Range [34]
- LeetCode 34 Search for a Range
- [leetcode 34] Search for a Range
- Leetcode NO.34 Search for a Range
- [LeetCode 34]Search for a Range
- leetcode-34 Search for a Range
- Leetcode 34 Search for a Range
- Search for a Range - LeetCode 34
- leetcode 34 -- Search for a Range
- leetcode 34: Search for a Range
- Leetcode#34 Search for a Range
- LeetCode(34) Search for a Range
- LeetCode 34: Search for a Range
- [Leetcode 34, Medium] Search for a Range
- [leetcode-34]Search for a Range(C)
- Leetcode#34||Search for a Range
- LeetCode(34)Search for a Range
- f(x)*(-1)^x的离散傅里叶变换及Matlab中如何绘制坐标轴
- 用tornado将flask部署到Nginx上
- 榴莲分配 递推
- liulu博客
- Java:面试题的一些总结
- LeetCode(34)--Search for a Range
- KMP算法解析
- next()和nextLine()的区别
- jquery的相关使用
- python下划线
- table的应用
- poj 1655 Balancing Act(树形dp)
- 关于Tinker的学习资料
- POJ 2104 K-th Number