问题:
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回 -1
。
样例:
样例 1:
输入:nums = [1,2,2,4,5,5], target = 2 输出:1 或者 2
样例 2:
输入:nums = [1,2,2,4,5,5], target = 6 输出:-1
python :
class Solution:
"""
@param nums: An integer array sorted in ascending order
@param target: An integer
@return: An integer
"""
def findPosition(self, nums, target):
# write your code here
if nums == None or len(nums) == 0:
return -1
left = 0
right = len(nums)-1
if nums[left] > target or nums[right] < target:
return -1
while left <= right:
mid = (left + right)//2
if nums[mid] < target:
left = mid+1
elif nums[mid] > target:
right = mid-1
else:
return mid
return -1
C++:
class Solution {
public:
/**
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
int findPosition(vector<int> &nums, int target) {
// write your code here
if(nums.size() == 0)
{
return -1;
}
int left = 0;
int right = nums.size()-1;
int mid = (left+right)/2;
if(nums[left] > target || nums[right] < target)
{
return -1;
}
while(left <= right)
{
mid = (left+right)/2;
if(nums[mid] < target)
{
left = mid+1;
}else if(nums[mid] > target){
right = mid-1;
}else{
return mid;
}
}
return -1;
}
};