classSolution { public: intsearch(vector<int>& nums, int target){ int left = 0; int right = nums.size() - 1; while(left < right){ int middle = left + right >> 1; if(nums[middle] >= target){ right = middle; }else{ left = middle + 1; } } if(nums[left] == target) return left; return-1;
} };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
classSolution { public: intsearch(vector<int>& nums, int target){ int left = 0; int right = nums.size() - 1; while(left < right){ int middle = left + right + 1 >> 1; if(nums[middle] > target){ right = middle - 1; }else{ left = middle; } } if(nums[left] == target) return left; return-1; } };
python:
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution: defsearch(self, nums: List[int], target: int) -> int: left, right = 0,len(nums) - 1 while left < right: middle = left + right + 1 >> 1 if nums[middle] > target: right = middle - 1 elif nums[middle] <= target: left = middle if nums[left] == target: return left return -1
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution: defsearch(self, nums: List[int], target: int) -> int: left, right = 0,len(nums) - 1 while left < right: middle = left + right >> 1 if nums[middle] >= target: right = middle elif nums[middle] < target: left = middle + 1 if nums[left] == target: return left return -1
classSolution { public: intsearchInsert(vector<int>& nums, int target){ int left = 0; int right = nums.size() - 1; if(nums[left] > target) return left; while(left < right){ int middle = left + right + 1 >> 1; if(nums[middle] > target){ right = middle - 1; }else{ left = middle; } } if(nums[left] == target) return left; return left + 1; } };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
classSolution { public: intsearchInsert(vector<int>& nums, int target){ int left = 0; int right = nums.size() - 1; if(nums[right] < target) return right + 1; while(left < right){ int middle = left + right >> 1; if(nums[middle] >= target){ right = middle; }else{ left = middle + 1; } } return left; } };
python:
1 2 3 4 5 6 7 8 9 10 11 12
classSolution(object): defsearchInsert(self, nums, target): left, right = 0, len(nums) - 1 if target > nums[right]: return right + 1 while left < right: middle = left + right >> 1 if nums[middle] >= target: right = middle else: left = middle + 1 return left
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution(object): defsearchInsert(self, nums, target): left, right = 0, len(nums) - 1 if target < nums[left]: return left while left < right: middle = left + right + 1 >> 1 if nums[middle] <= target: left = middle else: right = middle - 1 if nums[left] == target: return left return left + 1
classSolution: defsearchRange(self, nums: List[int], target: int) -> List[int]: iflen(nums) == 0: return [-1, -1] left, right = 0, len(nums) - 1 while left < right: middle = left + right >> 1 if nums[middle] >= target: right = middle else: left = middle + 1 if nums[left] != target: return [-1, -1] else: leftboarder = left left = 0 right = len(nums) - 1 while left < right: middle = left + right + 1 >> 1 if nums[middle] > target: right = middle - 1 else: left = middle rightborder = left return [leftboarder, rightborder]