《算法题讲解指南:优选算法-二分查找》--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

Java初中级工程师面试指南:从理论到实战的完美回答

Java初中级工程师面试指南:从理论到实战的完美回答

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * Java初中级工程师面试指南:从理论到实战的完美回答 * 引言 * 一、Java基础 * 1. Java集合框架:ArrayList vs LinkedList * 2. 多线程:Thread

By Ne0inhk
Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战 * 引言 * 正文 * 一、工业物联网设备状态监测概述 * 二、基于 Java 的大数据实时流处理技术 * 2.1 技术架构与原理 * 2.2 状态管理与故障恢复 * 三、应用案例分析 * 四、引入边缘计算优化架构 * 五、面临的挑战与应对策略 * 5.1 数据质量问题 * 5.2 系统性能瓶颈 * 5.3 安全与隐私保护 * 结束语 * 🗳️参与投票和联系我: 引言 亲爱的 Java 和 大数据爱好者们,大家好!在科技引领产业变革的时代,大数据技术已成为推动各行业智能化转型的核心引擎。此前,我们通过一系列文章,深入探讨了 Java 大数据在金融、

By Ne0inhk
【多线程奇妙屋】 Java 的 Thread类必会小技巧,教你如何用多种方式快速创建线程,学并发编程必备(实践篇)

【多线程奇妙屋】 Java 的 Thread类必会小技巧,教你如何用多种方式快速创建线程,学并发编程必备(实践篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!! 前言 想象一下,如果你的电脑只能一次执行一个任务,那会是多么的低效。幸运的是,Java提供了一种强大的机制,允许程序同时执行多个任务。这就是我们今天要探讨的主题——Java中的Thread类。 目录 1. Thread 类 2. 创建线程的方式 3. 线程终止 一. Thread 类 1. Thread 类的初识 对于线程的概念, 本身是 操作系统内核提出的概念 。 如果要执行并发编程, 就需要掌握不同的系统 api (例如 window 系统api , Linux 系统api ) 等… 这种 不同系统的api 是不一样的。 对于我们Java程序猿来说, Java的api 早已分装好 对应的系统api

By Ne0inhk
飞算JavaAI全链路实战:智能构建高可用电商系统核心架构

飞算JavaAI全链路实战:智能构建高可用电商系统核心架构

飞算JavaAI全链路实战:智能构建高可用电商系统核心架构 前言:AI编程新时代的电商系统开发范式变革 最近学习人工智能时遇到一个好用的网站给大家分享一下 人工智能学习 在当今数字经济时代,电商系统作为企业数字化转型的核心载体,其复杂度和技术要求与日俱增。一个完整的电商系统不仅需要处理商品、订单、用户等基础业务,还要应对高并发、分布式事务、数据一致性等复杂技术挑战。传统开发模式下,从需求分析到系统上线往往需要耗费大量人力和时间成本。 本次我通过飞算JavaAI平台,深入探索"电商系统核心功能模块"这一实战赛道,全面体验了从需求分析到代码生成的全链路开发过程。本文将完整呈现如何借助AI辅助开发工具,高效构建一个包含用户管理、商品系统、订单流程、支付集成等核心模块的电商平台,严格遵循"需求分析-开发实录-优化调试-成果总结"的四大核心框架,为开发者提供一份AI辅助全栈开发的完整实践指南。 一、需求分析与规划:构建电商系统的业务架构蓝图 在启动飞算JavaAI之前,需要进行全面的业务需求梳理和系统架构设计,这是确保AI生成代码符合预期的基础。 1.(理解需求)系统核心模块与

By Ne0inhk