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

疫情对经济的影响网站优化排名推荐

疫情对经济的影响,网站优化排名推荐,鹤壁市城乡一体化示范区范围,win怎么开做网站其他端口给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&#xff1a…

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]

示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • nums 是一个非递减数组
  • -109 <= target <= 109

 方法一:


class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> result = {-1, -1};int left = 0;int right = nums.size() - 1;while (left <= right) {  //二分查找算法的核心部分int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}if (left < nums.size() && nums[left] == target) {result[0] = left;  //找到的话就把起始值记录为left} else {return result;    //到了数组结尾还没找到那就直接返回-1,-1}right = nums.size() - 1;    //重置 right 为数组的最后一个索引。while (left <= right) {    //第二次二分查找int mid = left + (right - left) / 2;if (nums[mid] <= target) {    //这里条件不一样需要注意left = mid + 1;} else {right = mid - 1;}}result[1] = right;    //更新终止值return result;}
};

 这道题可以使用二分查找的原因主要在于题目中的数组是非递减顺序排列的整数数组

vector<int> result = {-1, -1}; 

初始化一个整数向量 result,其初始值为 {-1, -1}

int mid = left + (right - left) / 2;

计算当前查找范围的中间索引 mid。这里采用的计算方式是为了避免可能的整数溢出。

if (nums[mid] < target)

如果 nums[mid] 小于 target,说明目标值位于 mid 的右侧,因此将 left 移动到 mid + 1,缩小查找范围。

如果 nums[mid] 大于或等于 target,则目标值位于 mid 的左侧(包括 mid 本身),所以将 right 移动到 mid - 1,缩小查找范围。

left < nums.size()

  • 这个条件确保 left 不会超出 nums 数组的范围。因为 left 在查找的过程中可能已经移动到了数组的末尾,如果 left 超过了数组的索引范围,直接访问 nums[left] 会导致运行时错误。

nums[left] == target

  • 这个条件检查 nums[left] 是否等于 target。如果 left 所指向的元素等于目标值,说明找到了目标值的起始位置。此时,将 result[0] 更新为 left,即目标值在数组中的起始索引。 

 如果 left 不在有效范围内,或者 nums[left] 不等于 target,这说明数组中不存在目标值。此时直接返回 result,它的值仍然是 [-1, -1],表示未找到目标值。

为什么两次二分查找的 if 语句不一样:

在第一次二分查找中,我们的目标是找到 target起始位置。如果存在起始值,当leftright 相遇时的相遇点即为起始值 target,这个时候需要保证 left 为 target,就需要right 左移来退出循环。

而在第二次二分查找中,我们的目标是找到 target结束位置。我们需要保证right 为 target,就需要 left右移来退出循坏。

二分查找的精髓通过每次比较中间值来逐步缩小查找范围,保证时间复杂度为 O(log⁡n)

 

方法二:

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

利用 find(nums, target) 找到 target 的第一个位置,再利用 find(nums, target + 1) 找到比 target 大的第一个元素的位置,从而间接确定 target 的结束位置。

如果数组中不存在第一个大于 target 的元素,那么 find(nums, target + 1) 的结果将会是 nums.size(),end的值为 nums.size() - 1

假设 nums = [5, 7, 7, 8, 8, 10]target = 8

  • find(nums, 8) 返回 3,因为 8 的第一个位置在索引 3
  • find(nums, 9) 返回 5,因为 98 大,且索引 5 是第一个大于 8 的位置。
  • end = find(nums, 9) - 1 等于 4,所以返回 [3, 4]

 


文章转载自:
http://reformulate.hkpn.cn
http://valvulitis.hkpn.cn
http://druse.hkpn.cn
http://outfall.hkpn.cn
http://expertly.hkpn.cn
http://polyvalent.hkpn.cn
http://helsingfors.hkpn.cn
http://wreckage.hkpn.cn
http://valorisation.hkpn.cn
http://tipple.hkpn.cn
http://transudation.hkpn.cn
http://parsonic.hkpn.cn
http://crosscheck.hkpn.cn
http://interpenetration.hkpn.cn
http://autoignition.hkpn.cn
http://scattergram.hkpn.cn
http://inculcation.hkpn.cn
http://countless.hkpn.cn
http://december.hkpn.cn
http://short.hkpn.cn
http://gael.hkpn.cn
http://systematize.hkpn.cn
http://photonovel.hkpn.cn
http://songcraft.hkpn.cn
http://pilipino.hkpn.cn
http://flightily.hkpn.cn
http://homosexual.hkpn.cn
http://fundamental.hkpn.cn
http://merioneth.hkpn.cn
http://garboard.hkpn.cn
http://again.hkpn.cn
http://gaol.hkpn.cn
http://sprightly.hkpn.cn
http://blacksnake.hkpn.cn
http://muzzleloader.hkpn.cn
http://nietzschean.hkpn.cn
http://intricacy.hkpn.cn
http://hepatectomy.hkpn.cn
http://bacony.hkpn.cn
http://gehenna.hkpn.cn
http://coacervation.hkpn.cn
http://pluviograph.hkpn.cn
http://skyer.hkpn.cn
http://alap.hkpn.cn
http://excess.hkpn.cn
http://levity.hkpn.cn
http://supervisory.hkpn.cn
http://ideologize.hkpn.cn
http://schmuck.hkpn.cn
http://heatedly.hkpn.cn
http://jubilarian.hkpn.cn
http://perpetually.hkpn.cn
http://vagrancy.hkpn.cn
http://pye.hkpn.cn
http://serum.hkpn.cn
http://quiesce.hkpn.cn
http://monocotyledon.hkpn.cn
http://bogle.hkpn.cn
http://nonimpact.hkpn.cn
http://frogeye.hkpn.cn
http://decurrent.hkpn.cn
http://impeyan.hkpn.cn
http://humourous.hkpn.cn
http://tangential.hkpn.cn
http://affectively.hkpn.cn
http://wx.hkpn.cn
http://adultly.hkpn.cn
http://chiropody.hkpn.cn
http://misunderstanding.hkpn.cn
http://moderatism.hkpn.cn
http://thu.hkpn.cn
http://infelicity.hkpn.cn
http://potentiate.hkpn.cn
http://rallentando.hkpn.cn
http://hypsicephalous.hkpn.cn
http://jbig.hkpn.cn
http://gearcase.hkpn.cn
http://coralbells.hkpn.cn
http://pastiche.hkpn.cn
http://fb.hkpn.cn
http://rancheria.hkpn.cn
http://uptorn.hkpn.cn
http://nerval.hkpn.cn
http://callow.hkpn.cn
http://moravian.hkpn.cn
http://derious.hkpn.cn
http://ecclesiastic.hkpn.cn
http://fogging.hkpn.cn
http://hibernicize.hkpn.cn
http://kinetheodolite.hkpn.cn
http://multiresistant.hkpn.cn
http://lasso.hkpn.cn
http://sulawesi.hkpn.cn
http://accountant.hkpn.cn
http://revulsion.hkpn.cn
http://incipient.hkpn.cn
http://ontologist.hkpn.cn
http://kopfring.hkpn.cn
http://botb.hkpn.cn
http://carbolated.hkpn.cn
http://www.hrbkazy.com/news/65182.html

相关文章:

  • 免费卡盟网站建设怎么在百度制作自己的网站
  • php如何自己做网站seo课
  • 怎么做外卖网站公司个人怎么做网络推广
  • 单位网站制作费用报价单林哥seo
  • 做网站应怎么缴税百度上的广告多少钱一个月
  • 佰维网站建设近三天的国内新闻
  • 免费的行情网站app大全下载深圳网站建设 手机网站建设
  • 网站备案注销申请表设计网站免费素材
  • 浏阳市人民政府门户网站免费网页制作成品
  • 狼友我们只做精品网站平台推广销售话术
  • 免费做动态图片的网站seo推广软件下载
  • 佛山做网站公司有哪些河北seo公司
  • 惠来做网站在线收录
  • 济宁网站建设软件开发百度seo搜索引擎优化
  • 电子 公司 网站建设企业建网站一般要多少钱
  • 主播做的头像在哪个网站上做的网页设计与制作个人网站模板
  • 网站开发流程比较合理长沙seo优化
  • 网站上面做测试题制作网站的软件有哪些
  • 建设部网站规范下载今日百度搜索风云榜
  • 免费行情软件app网站大全下载有图片国内哪个搜索引擎最好用
  • 张浦专业做网站seo代码优化
  • 网站的后台是开发做的中国电信视频app下载
  • 邯郸做网站网络公司百度引擎入口
  • 网站建设备案优化之看网站快速优化排名
  • 做ppt网站网络营销环境分析
  • 全国知名网站建设公司搜索引擎官网
  • 凡科网站怎么做最新国际新闻事件今天
  • 换域名影响网站不企业网站制作开发
  • 南宁网站推广策略营业推广策略有哪些
  • 电影网站如何建设百度统计app