《算法题讲解指南:优选算法-二分查找》--19.x的平方根,20.搜索插入位置

《算法题讲解指南:优选算法-二分查找》--19.x的平方根,20.搜索插入位置

🔥小叶-duck个人主页

❄️个人专栏《Data-Structure-Learning》

《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心

未择之路,不须回头
已择之路,纵是荆棘遍野,亦作花海遨游


目录

19. x的平方根

题目链接:

题目描述:

题目示例:

解法(二分查找算法):

算法思路:

C++算法代码:

算法总结及流程解析:

20. 搜索插入位置

题目链接:

题目描述:

题目示例:

解法(二分查找算法):

算法思路:

C++算法代码:

算法总结及流程解析:

结束语


19. x的平方根

题目链接:

69. x 的平方根 - 力扣(LeetCode)

题目描述:

题目示例:

解法(二分查找算法):

算法思路:

设 x 的平方根的最终结果为 index:

分析 index 左右两边数据的特点:

  • 【0,index】 之间的元素,平方之后都小于等于 x;
  • 【index+1,x】之间的元素,平方之后都大于 x;

因此可以使用二分查找算法

C++算法代码:

class Solution { public: int mySqrt(int x) { int left = 0; int right = x; while(left < right) { int mid = left + ((long long)right - left + 1) / 2; //当right=INT_MAX时,则right - left + 1 = INT_MAX + 1而超出int最大值 //所以需要强转成long long类型 if((long long)mid * mid <= x) { left = mid; } else { right = mid - 1; } } return left; } };

算法总结及流程解析:

20. 搜索插入位置

题目链接:

35. 搜索插入位置 - 力扣(LeetCode)

题目描述:

题目示例:

解法(二分查找算法):

算法思路:

      分析插入位置左右两侧区间上元素的特点:设插入位置的坐标为 index

  • 【left,index-1】 内所有元素均是小于 target 的;
  • 【index,right】内所有元素均是大于等于 target 的

设 left 为本轮查询的左边界,right 为本轮查询的右边界,根据 mid 位置元素的信息,分析下一轮查询的区间:

  • 当 nums[ mid ] >= target 时,说明 mid 落在了 [ index, right ] 区间上,mid 左边包括 mid 本身,可能是最终结果,所以我们接下来查找的区间在 [ eft, mid ] 上。因此新 right 到 mid 位置,继续查找。
  • 当 nums[ mid ] < target 时,说明 mid 落在了 [ left, index - 1 ] 区间上,mid 右边但不包括 mid 本⾝,可能是最终结果,所以我们接下来查找的区间在 [ mid+ 1, right ] 上。因此,更新 left 到 mid + 1 的位置,继续查找。

直到我们的查找区间的长度变为 1 ,也就是 left == right 的时候, left 或者 right 所在的位置就是我们要找的结果。

C++算法代码:

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; } else { left = mid + 1; } } if(target > nums[nums.size() - 1]) //无大于等于target的区间,需要另外处理 { return left + 1; } return left; } };

算法总结及流程解析:

结束语

      到此,19.x的平方根,20.搜索插入位置 这两道算法题就讲解完了。19.x的平方根 通过二分法确定满足条件的最大整数解,注意处理大数越界问题;20.搜索插入位置 分析目标值在有序数组中的可能位置特征,使用二分查找确定插入点,需特别处理目标值大于所有元素的情况。希望大家能有所收获!

Read more

【Linux】ext 文件系统

【Linux】ext 文件系统

目录 * 一、ext 文件系统 * 1.1 在磁盘角度,如何创建、删除、修改、查看一个文件呢? * 1.2 理解目录 * 1.3 关于 inode 编号和块号 * 1.4 关于路径解析 * 1.5 关于路径缓存 * 1.6 关于路径 * 1.7 存储大文件 * 1.8 如何知道你的文件在哪个文件系统中? * 挂载分区 个人主页:矢望 个人专栏:C++、Linux、C语言、数据结构、Coze-AI 一、ext 文件系统 1.1 在磁盘角度,如何创建、

By Ne0inhk
[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

🔥🔥🔥本篇笔记所对应的视频:🚀颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发MCP服务_哔哩哔哩_bilibili Open WebUI 的 MCPo 项目:将 MCP 工具无缝集成到 OpenAPI 的创新解决方案 随着人工智能工具和模型的快速发展,如何高效、安全地将这些工具集成到标准化的 API 接口中成为了开发者面临的重要挑战。Open WebUI 的 MCPo 项目(Model Context Protocol-to-OpenAPI Proxy Server)正是为了解决这一问题而设计的。本文将带您深入了解 MCPo 的功能、优势及其对开发者生态的影响。 什么是 MCPo? MCPo 是一个简单、可靠的代理服务器,能够将任何基于 MCP 协议的工具转换为兼容

By Ne0inhk
Qwen3+Qwen Agent 智能体开发实战,打开大模型MCP工具新方式!(一)

Qwen3+Qwen Agent 智能体开发实战,打开大模型MCP工具新方式!(一)

系列文章目录 一、Qwen3+Qwen Agent 智能体开发实战,打开大模型MCP工具新方式!(一) 二、Qwen3+Qwen Agent +MCP智能体开发实战(二)—10分钟打造"MiniManus" 前言 要说最近人工智能界最火热的开源大模型,必定是阿里发布不久的Qwen3系列模型。Qwen3模型凭借赶超DeepSeek-V3/R1的优异性能,创新的混合推理模式,以及极强的MCP能力迅速成为AI Agent开发的主流基座模型。大家可参考我的文章一文解析Qwen3大模型详细了解Qwen3模型的核心能力。有读者私信我: “Qwen3官网特地强调增强了Agent和代码能力,同时加强了对MCP的支持,那么我该如何利用Qwen3快速开发MCP应用呢?” 这就就需要使用我们今天的主角——Qwen官方推荐的开发工具Qwen-Agent ,本期分享我们就一起学习快速使用Qwen3+QwenAgent 接入MCP服务端,快速开发AI Agent应用! 一、注册 Qwen3 API-Key 本次分享通过阿里云百炼大模型服务平台API Key请求方式调用Qwen3大模型,获取服务平台

By Ne0inhk