題目描述:
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
你的演算法時間複雜度必須是 o(log n) 級別。
如果陣列中不存在目標值,返回 [-1, -1]。
示例 1:
輸入: nums = [5,7,7,8,8,10], target = 8
輸出: [3,4]
示例 2:
輸入: nums = [5,7,7,8,8,10], target = 6
輸出: [-1,-1]
可能有些冗餘
**:
class solution ;
} if(nums.length == 1 && nums[0] == target);
} if(target < nums[0] || nums[nums.length - 1] < target);
} int start = 0;
int end = nums.length - 1;
int x = -1;
int mid = 0;
while (start < end) else if(nums[end] == target)
mid = start + (end - start) / 2;
system.out.println(nums[mid]);
if(target == nums[mid])
if(target > nums[mid])else
} if(x == -1);
} start = x;
while (start >= 0 && nums[start] == target)
end = x;
while (end < nums.length && nums[end] == target)
return new int;}}
精簡過後的**:
排名靠前的**:
class solution ;
if(nums == null || nums.length == 0)
int left = 0;
int right = nums.length - 1;
while(left < right)
else
}if(nums[left] == target)
if(nums[mid] != target)
else}}
if(nums[left] == target)
return res;}}
在排序陣列中查詢元素
34.在排序陣列中查詢元素的第乙個和最後乙個位置。給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 include include include...
leetcode 18 在排序陣列中查詢元素
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 二分查詢,然後再遞迴二分查詢 head,mid 1 mid 1,tail 結果絕世 right ...
034在排序陣列中查詢元素的第乙個和最後乙個
1 include 000庫函式.h 2 3 使用二分法查詢到目標值的位置,然後分兩邊再查詢出起始位置和終止位置4 16ms 不是嚴格意義上的logn的複雜度 5class solution 9int i 0,j nums.size 1 10 int m 1 11 while i j 17if nu...