class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: a=nums.count(target) if a==0: return [-1,-1] else: d=nums.index(target) if a==1: return [d,d] else: return [d,d+a-1]
执行用时 :112 ms, 在所有 Python3 提交中击败了77.01%的用户
内存消耗 :15 MB, 在所有 Python3 提交中击败了5.30%的用户
别人有运行时间短的例子,但是我看不进去了,只能挑最简单的方法来做了。。。
脑子已经运行不动了。
——2019.10.8
二分法
public int[] searchRange(int[] nums, int target) { //二分法 int len = nums.length; if(len == 0){ return new int[]{-1,-1}; } if(len == 1){ if(nums[0] != target){ return new int[]{-1,-1}; }else{ return new int[]{0,0}; } } int left = 0,right = len; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] == target) { //左右两边扩散搜索 int k = mid - 1; while (k >= left) { if (nums[k] == target) { k--; } else { break; } } while (mid + 1 < right) { if (nums[mid + 1] == target) { mid++; } else { break; } } return new int[]{k + 1, mid}; } else if (nums[mid] > target) { right = mid; }else{ left = mid+1; } } return new int[]{-1,-1}; }
——2020.7.14