二分查找
Vaccy Zhu
自律是解决人生问题最主要的工具,也是解决人生痛苦最重要的方法!
展开
-
搜索二维矩阵-数组74-python&c++
二分查找pythonclass Solution: def searchMatrix(self, matrix: List[List[int]], target: int): m = len(matrix) n = len(matrix[0]) for line in matrix: if target < line[0] or target > line[-1]: contin原创 2021-08-15 22:29:47 · 76 阅读 · 0 评论 -
咒语和药水的成功对数-二分查找2300-c++
二分查找,但会超时,主要是数组中的相同元素过度而导致延申查找超时(时间复杂度变成O(N^2),原本应为O(NlogN))原创 2024-03-31 20:18:43 · 311 阅读 · 0 评论 -
猜数字大小-二分查找374-c++
二分查找easy难度题。原创 2024-03-31 20:12:18 · 183 阅读 · 0 评论 -
猜数字大小-二分查找374-c++
二分查找easy难度题。原创 2024-03-31 20:11:36 · 146 阅读 · 0 评论 -
猜数字大小-二分查找374-c++
二分查找easy难度题。原创 2024-03-31 19:16:18 · 126 阅读 · 0 评论 -
有效的完全平方数-二分查找367-python
class Solution: def isPerfectSquare(self, num: int) -> bool: if num == 1: return True left, right = 0, num-1 while left <= right: mid = int(left + (right - left)/2) if mid原创 2022-02-13 19:36:25 · 398 阅读 · 0 评论 -
搜索插入位置-二分查找35-c++
算法思想:一、没看答案:while循环用来负责target在数组中不存在的情况下将target+1并继续搜索,直到搜索到或者超过了数组的最大值(因为数组是有序的,最大值就是数组最后一个值),并按情况返回下标索引。因为target是不断增大的,所以如果target一开始就小于数组最小值,要额外判断并输出0。C++class Solution {public: int searchInsert(vector<int>& nums, int target) {原创 2021-04-04 23:38:01 · 232 阅读 · 1 评论 -
在排序数组中查找元素的第一个和最后一个位置-二分查找34-python&c++
没看答案,考察的是有重复数字数组的二分查找的左右边界问题。class Solution: def left_bound(self, nums, target): left, right = 0, len(nums)-1 while left <= right: mid = int(left + (right - left)/2) if nums[mid] == target:原创 2022-02-12 21:14:31 · 550 阅读 · 0 评论 -
寻找旋转排序数组中的最小值II-二分查找154-python
pythonclass Solution: def findMin(self, nums: List[int]): left, right = 0, len(nums)-1 while left < right: mid = int(left + (right-left)/2) if nums[mid] > nums[right]: left = mid + 1原创 2021-09-09 15:30:47 · 96 阅读 · 0 评论 -
寻找旋转排序数组中的最小值-二分查找153-python
pythonclass Solution: def findMin(self, nums: List[int]): left, right = 0, len(nums)-1 while left < right: mid = int(left + (right-left)/2) if nums[mid] <= nums[right]: right = mid原创 2021-09-09 15:06:43 · 104 阅读 · 0 评论 -
在排序数组中查找数字I-二分查找(剑指Offer 53-I)-python
pythonclass Solution: def search(self, nums: List[int], target: int): left, right = 0, len(nums)-1 res = 0 while left <= right: mid = int(left + (right-left)/2) if nums[mid] == target:原创 2021-09-05 15:09:26 · 80 阅读 · 0 评论 -
寻找峰值-数组162-python&c++
python线性遍历import sysclass Solution: def findPeakElement(self, nums: List[int]): n = len(nums) nums.append(-sys.maxsize) for i in range(n): if nums[i] > nums[i-1] and nums[i] > nums[i+1]: ret原创 2021-08-26 20:28:45 · 318 阅读 · 0 评论 -
搜索旋转排序矩阵-二分查找33-python&c++
二分查找pythonclass Solution: def search(self, nums: List[int], target: int): if nums == None: return -1 n = len(nums) l, r = 0, n-1 while l <= r: mid = (l + r) // 2 if nums原创 2021-08-01 11:39:49 · 102 阅读 · 0 评论 -
平方根-二分查找69-python
算法思想暴力解法pythonclass Solution: def mySqrt(self, x: int): if x == 0 or x == 1: return x res = 0 for i in range(x): if i * i > x: return res res = i return原创 2021-07-31 18:28:38 · 100 阅读 · 0 评论 -
数组中重复的数字-数组(剑指offer03)-python&C++
C++暴力解法:class Solution {public: int findRepeatNumber(vector<int>& nums) { vector<int> rec; for(auto v : nums){ if(find(rec.begin(), rec.end(), v) == rec.end()){ rec.push_back(v);原创 2021-06-21 20:26:56 · 88 阅读 · 0 评论 -
缺失的数字-二分查找(剑指offer53)-C++
class Solution {public: int missingNumber(vector<int>& nums) { if(nums.empty()) return 0; for(int i = 1; i < ; i++){ if(a[i] - 1== a[i - 1]) continue; else{ return a[i] - 1;原创 2021-03-20 22:41:04 · 144 阅读 · 0 评论 -
二分查找-二分查找704-C++&python
class Solution {public: int search(vector<int>& nums, int target) { if(nums.empty()) return -1; if(nums[0] == target){ return 0; } int index0 = 0; int index1 = nums.size() - 1; int原创 2021-03-19 12:18:56 · 158 阅读 · 0 评论 -
寻找两个正序数组的中位数-二分查找4-python&c++
python一. 无脑傻瓜版本:1.把两个数组合并成一个数组并排序;2.找到新数组的中位数。class Solution: def findMedianSortedArrays(self, nums1, nums2): ls = list() for i in nums1: ls.append(i) for j in nums2: ls.append(j) ls.原创 2021-02-07 18:09:57 · 272 阅读 · 1 评论