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

南昌做网站哪个公司好网站建设_超速云建站

南昌做网站哪个公司好,网站建设_超速云建站,wordpress 添加搜索框,云表无代码开发平台二分法网上有两种写法&#xff0c;一种左闭右闭&#xff0c;一种左闭右开&#xff0c;个人习惯左闭右闭的写法&#xff0c; 有序数组查找数 这是标准二分法&#xff0c;对应力扣的704. 二分查找&#xff1a; 求值为target的索引 int search(vector<int>& nums, i…

二分法网上有两种写法,一种左闭右闭,一种左闭右开,个人习惯左闭右闭的写法,

有序数组查找数

这是标准二分法,对应力扣的704. 二分查找:

  • 求值为target的索引
int search(vector<int>& nums, int target) {int left = 0; int right = nums.size();while (left < right){int mid = left + (right - left) / 2;if (nums[mid] > target)right = mid;else if (nums[mid] < target)left = mid + 1;elsereturn mid;}return -1;
}

在这里插入图片描述

求左右边界

二分法还可以求第一个大于target的索引和第一个小于target的索引

  • 求第一个大于target的值的索引(右边界)
int getRightIndex(vector<int>& nums, int target)
{int left = 0; int right = nums.size() - 1;int rightBorder = -2;while (left <= right){int mid = left + (right - left) / 2;if (nums[mid] > target)right = mid - 1;else{left = mid + 1;rightBorder = left;}}return rightBorder;
}

在这里插入图片描述

力扣的35. 搜索插入位置也可以用这个思路解决:

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

当然只有一个target也有更简洁的写法,左闭右闭的写法里最后的left就是右边界了:

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while (left <= right){int mid = left + (right - left) / 2;if (nums[mid] > target)right = mid - 1;else if (nums[mid] < target)left = mid + 1;elsereturn mid;}return left;}
};
  • 求第一个小于target的值的索引(左边界)
int getLeftIndex(vector<int>& nums, int target)
{int left = 0; int right = nums.size() - 1;int leftBorder = -2;while (left <= right){int mid = left + (right - left) / 2;if (nums[mid] < target)left = mid + 1;else{right = mid - 1;leftBorder = right;}}return leftBorder;
}

在这里插入图片描述

使用上面两种方法求第一个大于target的索引和第一个小于target的索引对应的是力扣的34. 在排序数组中查找元素的第一个和最后一个位置。第一个target出现的索引和最后一个target出现的索引,对应的就是左边界+1和右边界-1,题目的完整代码:

class Solution {
public:int getRightIndex(vector<int>& nums, int target){int left = 0; int right = nums.size() - 1;int rightBorder = -2;while (left <= right){int mid = left + (right - left) / 2;if (nums[mid] > target)right = mid - 1;else{left = mid + 1;rightBorder = left;}}return rightBorder;}int getLeftIndex(vector<int>& nums, int target){int left = 0; int right = nums.size() - 1;int leftBorder = -2;while (left <= right){int mid = left + (right - left) / 2;if (nums[mid] < target)left = mid + 1;else{right = mid - 1;leftBorder = right;}}return leftBorder;}vector<int> searchRange(vector<int>& nums, int target) {int leftBorder = getLeftIndex(nums, target);int rightBorder = getRightIndex(nums, target);if (leftBorder == -2 || rightBorder == -2)return {-1, -1};if (rightBorder - leftBorder > 1)return {leftBorder + 1, rightBorder - 1};return {-1, -1};}
};
http://www.yayakq.cn/news/880684/

相关文章:

  • 网站设计项目策划pptwordpress如何添加视频
  • 高端网站制作要多少钱500云网站
  • 国外优秀购物网站设计铜仁网站建设
  • 网站建设包括哪些知识手工制作灯笼步骤 教程
  • 网站建设的步骤有哪些网站开发交接
  • 网站开发与设计入门贵阳网络公司网站建设
  • node.js可以做网站么邯郸渊博网络有限公司
  • 做磁力解析网站小程序登录后台
  • 建设盗号网站的模块地方门户网站推广方法有那些
  • 导购网站建设需求模版如何利用网站赚钱
  • asp网站源码 怎么安装订阅号申请
  • 网站本身对网站打开速度有何影响无忧建站
  • 重庆最大的网站制作公司新网虚拟主机安装wordpress
  • idc 公司网站模板电商erp系统
  • 成都网站建设公司思乐科技建筑工程网格化管理实施方案
  • c2c网站网址制作网站团队
  • 做网站 多少钱外国人做中国英语视频网站吗
  • 绍兴做网站哪家好公众号开发费用
  • 别人怎么看见我做的网站gif动图素材网站
  • 企业网站托管外包方式自助建站系统免费模式
  • 纯静态做企业网站个人怎么样做网站
  • 可以上传软件的网站织梦手机网站模板删除不了
  • 做竞价的网站有利于优化吗wordpress 获取附件
  • 做外贸哪个网站比较好2017怎么建小说网站
  • 微站小程序罗湖网站 建设深圳信科
  • 展示型网站设计方案云浮网站建设公司
  • aspnet网站开发 视频wordpress虚拟储存
  • 佛山市网站建设分站哪家好区块链网站开发费用
  • 国际财经新闻最新头条广州17年seo优化技术电话
  • 机械设备东莞网站建设关于网站建设的简历