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

上海定制网站开发千万不要报培训班学室内设计

上海定制网站开发,千万不要报培训班学室内设计,网站做301跳转需解析,培训心得简短200字原题链接#x1f517;#xff1a;在排序数组中查找元素的第一个和最后一个位置 难度#xff1a;中等⭐️⭐️ 题目 给你一个按照非递减顺序排列的整数数组 nums#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标…原题链接在排序数组中查找元素的第一个和最后一个位置 难度中等⭐️⭐️ 题目 给你一个按照非递减顺序排列的整数数组 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] 109nums 是一个非递减数组-109 target 109 二分查找 二分查找Binary Search也称为折半搜索是一种在有序数组中查找特定元素的搜索算法。其基本思想是将目标值与数组中间的元素进行比较 如果目标值等于中间元素搜索成功返回该位置。如果目标值小于中间元素搜索范围缩小至数组的左半部分。如果目标值大于中间元素搜索范围缩小至数组的右半部分。这个过程将不断重复直到找到目标值或者搜索范围为空为止。 以下是二分查找算法的一般步骤 初始化设置两个指针一个指向数组的起始位置通常记为 left另一个指向数组的结束位置通常记为 right。 循环条件当 left 小于等于 right 时继续循环。 计算中间位置计算 left 和 right 之间的中间位置 mid通常使用 (left right) / 2。 比较与调整 如果 nums[mid] 等于目标值根据需要返回 mid 或继续搜索以找到更精确的位置。如果 nums[mid] 大于目标值将 right 调整为 mid - 1。如果 nums[mid] 小于目标值将 left 调整为 mid 1。 循环结束如果 left 大于 right则表示目标值不在数组中返回一个特定的值通常是 -1表示未找到。 二分查找的效率非常高时间复杂度为 O(log n)其中 n 是数组的长度。然而它要求数组是有序的并且只能应用于一维有序数组。 下面是一个简单的 C 实现示例 int binarySearch(const std::vectorint nums, int target) {int left 0, right nums.size() - 1;while (left right) {int mid left (right - left) / 2; // 防止溢出if (nums[mid] target) {return mid; // 找到目标值} else if (nums[mid] target) {left mid 1; // 搜索右半部分} else {right mid - 1; // 搜索左半部分}}return -1; // 未找到目标值 }这个函数会返回目标值在数组中的索引如果目标值不在数组中则返回 -1。 题解 解题思路 LeetCode 上的这个问题通常被称为“Find First and Last Position of Element in Sorted Array”题目编号为 34。这个问题可以通过二分查找算法来解决因为数组是已经排序的。 以下是解决这个问题的一般思路 理解问题首先你需要理解问题的要求即在一个升序排序的数组中找到给定元素的第一个和最后一个位置。 二分查找由于数组是有序的你可以使用二分查找来找到目标元素的索引。二分查找的基本思想是将数组分成两半比较中间元素与目标值然后根据比较结果决定是继续在左半部分查找还是右半部分查找。 找到第一个位置使用二分查找但需要稍作修改以找到第一个位置。在每次迭代中如果中间元素等于目标值你不能立即返回这个位置因为可能还有更小的索引也是目标值。你需要向左半边继续查找。 找到最后一个位置同样使用二分查找但这次如果中间元素等于目标值你需要向右半边继续查找因为可能还有更大的索引也是目标值。 边界条件在查找过程中需要处理数组的边界条件确保不会访问数组之外的索引。 c demo #include vector #include iostream// 二分查找函数用于找到目标值的索引 int binarySearch(const std::vectorint nums, int target, bool findFirst) {int left 0, right nums.size() - 1, result -1;while (left right) {int mid left (right - left) / 2;if (nums[mid] target) {result mid; // 记录找到的位置if (findFirst) {right mid - 1; // 向左查找第一个位置}else {left mid 1; // 向右查找最后一个位置}}else if (nums[mid] target) {left mid 1;}else {right mid - 1;}}return result; }// 主函数用于找到元素的第一个和最后一个位置 std::vectorint findFirstAndLastPosition(const std::vectorint nums, int target) {int first binarySearch(nums, target, true); // 找到第一个位置int last binarySearch(nums, target, false); // 找到最后一个位置return { first, last }; }int main() {std::vectorint nums { 5, 7, 7, 8, 8, 10 };int target 8;std::vectorint positions findFirstAndLastPosition(nums, target);std::cout First position: positions[0] std::endl;std::cout Last position: positions[1] std::endl;return 0; }输出结果 First position: 3 Last position: 4 代码仓库地址findFirstAndLastPosition
http://www.hkea.cn/news/14400717/

相关文章:

  • 云酒店网站建设南京营销网站建设
  • 购物网站主页模板运动网站建设
  • 简单的模板网站代理网址上网
  • 如何创建广告网站北京网站建设推荐华网天下
  • 考研网站做刷词网站跳转如何做
  • 不用写代码做网站软件深圳做网站建设的哪家效果好又便宜
  • 个体可以做企业网站吗wordpress上传参数有哪些
  • 自助建设分销商城网站网站模板源代码下载
  • 西安做网站一般多少钱搜索引擎优化seo名词解释
  • 最便宜网站空间网站怎么更改域名
  • 做电池网站的引导页入门编程软件
  • 新民企业自助建站怎么可以联系到网站开发者
  • 网站好玩代码和特效女生学建筑选择什么专业
  • 网站建设项目结构分析网页网站免费
  • 正规的佛山网站建设价格创建简单的微信小程序
  • 把自己做的网站上传到服务器网上商城怎么做推广
  • 青海省住房和城乡建设厅门户网站图片编辑工具免费版
  • 牟长青 做网站推广的四个基本要点html网站制作模板
  • wordpress 点击次数深圳seo网站排名优化
  • wordpress建站要钱么江苏省建设工程管理局网站
  • 企业网站建设指导规范wordpress不能后台
  • 免代码开发平台十堰优化网站公司
  • 做百度推广的网站个人网站命名
  • 免费一键生成个人网站服务类的网站怎么做
  • 2018网站建设深圳贷款网站建设
  • 网站没有备案信息该怎么做建设一个公司网站需要什么知识
  • ip做网站域名短链接制作
  • 做网站外包需要提供什么保险网站建设
  • 网站微信认证江苏建设电子证书查询
  • 做网站的文案怎么写青岛教育平台网站建设