当前位置: 首页> 汽车> 车展 > 126企业邮箱入口_汕头人才引进_seo关键字优化价格_推广普通话的意义

126企业邮箱入口_汕头人才引进_seo关键字优化价格_推广普通话的意义

时间:2025/7/21 14:22:37来源:https://blog.csdn.net/m0_46676283/article/details/145774172 浏览次数: 0次
126企业邮箱入口_汕头人才引进_seo关键字优化价格_推广普通话的意义

文章目录

  • 1.二分查找
    • 1.题目
    • 2.解题思路
    • 3. 解题代码
  • 2.在排序数组中查找元素的第一个和最后一个位置
    • 1.题目
    • 2.算法原理
    • 3. 代码
  • 3.x的平方根
    • 1.题目
    • 2.代码
  • 4.搜索插入位置
    • 1.题目
    • 2.解题思路
    • 3.解题代码
  • 5.山脉数组的索引
    • 1.题目
    • 2.解题思路
    • 3. 代码
  • 6.寻找峰值
    • 1.题目
    • 2.解题思路
    • 3.代码
  • 7. 寻找旋转排序数组中的最小值
    • 7.1 题目
    • 7.2 解题思路
    • 7.3 代码
  • 8.0~n-1中缺失的数字
    • 1.题目
    • 2.思路
    • 3.代码

1.二分查找

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.解题思路

在这里插入图片描述

3. 解题代码

class Solution {
public:int search(vector<int>& nums, int target) {for(int left = 0, right = nums.size() - 1; left <= right; ){int mid = left + (right - left) / 2;if(nums[mid] > target) right = mid - 1;else if(nums[mid] < target) left = mid + 1;else return mid;}return -1;}
};

2.在排序数组中查找元素的第一个和最后一个位置

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.算法原理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 代码

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int n = nums.size(), left = 0, right = n - 1;if(n == 0) return {-1, -1};// 查找左端点while(left < right){int mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else right = mid;}if(nums[left] != target) return {-1, -1};int left1 = left;right = n - 1;//找右端点while(left < right){int mid = left + (right - left + 1) / 2;if(nums[mid] <= target) left = mid;else right = mid - 1;}return {left1, left};}
};

3.x的平方根

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.代码

class Solution {
public:int mySqrt(int x) {long long left = 0, right = x;while(left < right){long long mid = left + (right - left + 1) / 2;if(mid * mid <= x) left = mid;else right = mid - 1;}return left;}
};

4.搜索插入位置

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.解题思路

在这里插入图片描述

3.解题代码

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int n = nums.size(), left = 0, right = n - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else right = mid;}if(nums[left] >= target) return left; else return left + 1;}
};

5.山脉数组的索引

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.解题思路

在这里插入图片描述

3. 代码

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 0, n = arr.size(), right = n - 1;while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;if(arr[mid] < arr[mid - 1]) right = mid - 1;}return left;}
};

6.寻找峰值

1.题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.解题思路

在这里插入图片描述

3.代码

class Solution {
public:int findPeakElement(vector<int>& nums) {int left = 0, n = nums.size(), right = n - 1;while(left < right){int mid = left + (right - left+ 1) / 2;if(nums[mid] > nums[mid - 1]) left = mid;if(nums[mid] < nums[mid - 1]) right = mid - 1;}return left;}
};

7. 寻找旋转排序数组中的最小值

7.1 题目

题目链接
在这里插入图片描述
在这里插入图片描述

7.2 解题思路

在这里插入图片描述

7.3 代码

class Solution {
public:int findMin(vector<int>& nums) {int left = 0, n = nums.size(), right = n - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] > nums[right]) left = mid + 1;if(nums[mid] <= nums[right]) right = mid;}return nums[left];}
};
// 原来看题解的代码
class Solution {
public:int findMin(vector<int>& nums) {int left = -1;int right = nums.size() - 1;while(left + 1 < right){int mid = left + (right - left) / 2;if (nums[mid] < nums.back()){right = mid;}else{left= mid;}}return nums[right];}
};

8.0~n-1中缺失的数字

1.题目

(剑指offer的题目,所以不能免费做题)
在这里插入图片描述

2.思路

在这里插入图片描述
在这里插入图片描述

3.代码

在这里插入图片描述

关键字:126企业邮箱入口_汕头人才引进_seo关键字优化价格_推广普通话的意义

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: