当前位置: 首页 > news >正文

如何删除在凡科上做的网站网站推广优化排名公司

如何删除在凡科上做的网站,网站推广优化排名公司,外贸网站模板,淘宝上的网站建设第一此次想到的解法是首先使用二分查找在排序数组中查找到一个指定元素&#xff0c;随后对该元素左右进行遍历&#xff0c;找到起始位置和结束位置&#xff0c;代码如下&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int…

第一此次想到的解法是首先使用二分查找在排序数组中查找到一个指定元素,随后对该元素左右进行遍历,找到起始位置和结束位置,代码如下:

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

执行虽然通过,但测试用时并不是很理想,在 代码随想录 看到的解法是将题目分为三种情况:

  • 情况一:target 在数组范围的右边或者左边,例如数组{3, 4, 5},target为2或者数组{3, 4, 5},target为6,此时应该返回{-1, -1}
  • 情况二:target 在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1, -1}
  • 情况三:target 在数组范围中,且数组中存在target,例如数组{3,6,7},target为6,此时应该返回{1, 1}

采用二分法来分别寻找左边界和右边界,最终分情况进行return。代码如下:

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int leftBorder = getLeftBorder(nums, target);int rightBorder = getRightBorder(nums, target);// 情况一if (leftBorder == -2 || rightBorder == -2) return {-1, -1};// 情况三if (rightBorder - leftBorder > 1) return {leftBorder + 1, rightBorder - 1};// 情况二return {-1, -1};}
private:int getRightBorder(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;int rightBorder = -2; // 记录一下rightBorder没有被赋值的情况while (left <= right) {int middle = left + ((right - left) / 2);if (nums[middle] > target) {right = middle - 1;} else { // 寻找右边界,nums[middle] == target的时候更新leftleft = middle + 1;rightBorder = left;}}return rightBorder;}int getLeftBorder(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;int leftBorder = -2; // 记录一下leftBorder没有被赋值的情况while (left <= right) {int middle = left + ((right - left) / 2);if (nums[middle] >= target) { // 寻找左边界,nums[middle] == target的时候更新rightright = middle - 1;leftBorder = right;} else {left = middle + 1;}}return leftBorder;}
};

将上述代码的两个二分查找函数进行合并:

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int leftBorder = getBorder(nums, target, true);int rightBorder = getBorder(nums, target, false);// 情况一if (leftBorder == -2 || rightBorder == -2) return {-1, -1};// 情况三if (rightBorder - leftBorder > 1) return {leftBorder + 1, rightBorder - 1};// 情况二return {-1, -1};}
private:int getBorder(vector<int>& nums, int target, bool flag) {int left = 0;int right = nums.size() - 1;int border = -2;while (left <= right){int middle = left + (right - left)/2;if(flag) { //flag = true,返回左边界if (nums[middle] >= target) { // 寻找左边界,nums[middle] == target的时候更新rightright = middle - 1;border = right;} else {left = middle + 1;}}else{if (nums[middle] > target) {right = middle - 1;} else { // 寻找右边界,nums[middle] == target的时候更新leftleft = middle + 1;border = left;}}}return border;}};
http://www.dinnco.com/news/50122.html

相关文章:

  • 做网站代理商好赚吗?市场调研报告范文
  • 优秀设计作品网站凡科网站官网
  • 做web的网站中国宣布取消新冠免费治疗
  • 自己网站做问卷调查关键词搜索查找工具
  • 校园网站建设申请网站建设技术
  • 做网站需要什么cailiao公众号怎么推广
  • wordpress后台菜单修改长沙有实力seo优化
  • 网站建设难做吗百度竞价推广登录入口
  • 做网站日志步骤网络培训平台有哪些
  • 做个营销型网站营销心得体会感悟300字
  • 适合大学生做的兼职网站广告优化师的工作内容
  • 建站推广网站排名百度指数查询入口
  • 东莞营销网站建设专门做排行榜的软件
  • 制作一个网站都需要学什么网络营销推广技术
  • 昆山做网站价格seo攻略
  • 新疆做网站哪家公司好关键词优化的策略有哪些
  • 怎样自己搭建一个做影视的网站baidu百度首页
  • 买空间域名做网站海南百度推广总代理商
  • 软件开发过程五个步骤谷歌搜索引擎优化seo
  • 做鸭服务的网站或群推广工具
  • 长春制作网站定制手游推广去哪里找客源
  • 经验丰富的网站制作公司东营网站建设制作
  • 做海报免费素材网站有哪些百度置顶广告多少钱
  • 求一个做交通分析的底图网站怎么开个人网站
  • 可以玩小游戏的网站百度引流平台
  • 思坎普网站建设网上代写文章一般多少钱
  • 广东网站设计专业团队app推广接单平台有哪些
  • 南山品牌网站建设企业怎么提高关键词搜索权重
  • 做交通事故的网站做一个网站需要什么
  • 建筑设计师专业网站南昌seo排名扣费