leetcode 34
题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。
1、位置限制条件要放在&&符号前,不然容易报错
2、最后是{i+1, j-1},而不是{i, j}
3、返回{}是因为函数返回类型是vector
4、其他方法:利用二分分别寻找左边界和右边界
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int begin = 0;
int end = nums.size() - 1;
int mid;
int i, j;
while (end >= begin) {
mid = begin + (end - begin) / 2;
if (nums[mid] > target) {
end = mid - 1;
}
else if (nums[mid] < target) {
begin = mid + 1;
}
else {
i = mid;
while (i >= 0 && nums[i] == target) {
i--;
}
j = mid;
while (j < nums.size() && nums[j] == target) {
j++;
}
return { i+1, j-1 };
}
}
return { -1, -1 };
}
};