34- Find First and Last Position of Element in Sorted Array
Posted qiang-wei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了34- Find First and Last Position of Element in Sorted Array相关的知识,希望对你有一定的参考价值。
Given an array of integers nums
sorted in ascending order, 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]
.
Example 1:
Input: nums = [5,7,7,8,8,10]
, target = 8
Output: [3,4]
Example 2:
Input: nums = [5,7,7,8,8,10]
, target = 6
Output: [-1,-1]
我的解:
class Solution { public: // 递归进行,二分查找 void binSearch(vector<int>& nums, int target, int begin, int end, int& index1, int& index2) { while (begin <= end) { int mid = begin + (end - begin) / 2; if (nums[mid] == target) { if (mid < index1)index1 = mid; if (mid > index2)index2 = mid; if (begin == end) return ; if (mid > 0 && nums[mid - 1] == target) binSearch(nums, target, begin, mid - 1, index1, index2); if (mid < end && nums[mid + 1] == target) binSearch(nums, target, mid + 1, end, index1, index2); return; } if (nums[mid] < target) { begin = mid + 1; } if (nums[mid] > target) { end = mid - 1; } } } vector<int> searchRange(vector<int>& nums, int target) { vector<int> res{ -1,-1 }; if (nums.size() < 1)return res; int b = 0; int e = nums.size() - 1; int index1 = e + 1; int index2 = b - 1; binSearch(nums, target, b, e, index1, index2); if (index1 <= index2) { res[0] = index1; res[1] = index2; } return res; } };
优秀解1:
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int idx1 = lower_bound(nums, target); int idx2 = lower_bound(nums, target+1)-1; if (idx1 < nums.size() && nums[idx1] == target) return {idx1, idx2}; else return {-1, -1}; }
// 利用二分查找的思想 int lower_bound(vector<int>& nums, int target) { int l = 0, r = nums.size()-1; while (l <= r) { int mid = (r-l)/2+l; if (nums[mid] < target) l = mid+1; else r = mid-1; } return l; } };
以上是关于34- Find First and Last Position of Element in Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 34. Find First and Last Position of Element in Sorted Array
[leetcode][34] Find First and Last Position of Element in Sorted Array
[二分搜索] leetcode 34 Find First and Last Position of Element in Sorted Array
34- Find First and Last Position of Element in Sorted Array
Leetcode 34 Find First and Last Position of Element in Sorted Array 解题思路 (python)
刷题34. Find First and Last Position of Element in Sorted Array