【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

X的平方根

class Solution:

    def mySqrt(self, x: int) -> int:

        l, r, ans = 0, x, -1

        while l <= r:

            mid = (l + r) // 2

            if mid * mid <= x:

                ans = mid

                l = mid + 1

            else:

                r = mid - 1

        return ans

有效完全平方数

class Solution:

    def isPerfectSquare(self, num: int) -> bool:

        l = 0

        r = num

        while l <= r:

            mid = (l+r)//2

            if mid * mid == num:

                return True

            elif mid * mid < num:

                l = mid + 1

            else:

                r = mid - 1

        return False

搜索旋转排序数组

class Solution:

    def search(self, nums: List[int], target: int) -> int:

        if not nums:

            return -1

        # 二分法

        n = len(nums)

        left = 0

        right = n - 1

        while left <= right:

            mid = (left + right) // 2

            if nums[mid] == target:

                return mid

            if nums[0] <= nums[mid]:

                # 说明左边有序

                if nums[0] <= target < nums[mid]:

                    right = mid - 1

                else:

                    left = mid + 1

            else:

                # 右边有序

                if nums[mid] < target <= nums[n-1]:

                    left = mid + 1

                else:

                    right = mid - 1

        return -1

搜索二位矩阵

class Solution:

    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:

        if not matrix:

            return False

        # 二分查找 row = index // n ; col = index % n

        m = len(matrix)

        n = len(matrix[0])

        left = 0

        right = m * n - 1

        while left <= right:

            mid = (left + right) // 2

            cur_m = mid // n

            cur_n = mid % n

            if matrix[cur_m][cur_n] == target:

                return True

            elif matrix[cur_m][cur_n] > target:

                right = mid - 1

            else:

                left = mid + 1

        return False

搜索二维矩阵2

   def searchMatrix(self, matrix, target):

        """

        :type matrix: List[List[int]]

        :type target: int

        :rtype: bool

        """

        # 1.暴力法 for i in range(m) for j in range(n)   O(mn)

        # 2.剪枝搜索,假设从左下角开始搜索O(m+n)

        if not matrix:

            return False

        m = len(matrix)

        n = len(matrix[0])

        row = m - 1

        col = 0

        while row >= 0 and col < n:

            if matrix[row][col] > target:

                row -= 1

            elif matrix[row][col] < target:

                col += 1

            else:

                return True

        return False

寻找旋转排序数组中的最小值

class Solution:

    def findMin(self, nums: List[int]) -> int:

        if len(nums) == 1:

            return nums[0]

        left = 0

        right = len(nums) - 1

        while left < right:

            mid = (left + right) // 2

            if nums[mid] < nums[right]:

                # mid可能是最小值

                right = mid

            else:

                # mid一定不是最小值

                left = mid + 1

        return nums[left]

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单页应用如何提高加载速度?

提高单页应用&#xff08;Single Page Application&#xff0c;SPA&#xff09;的加载速度可以从以下几个方面入手&#xff1a; 代码优化&#xff1a;压缩和精简 JavaScript、CSS 和 HTML 代码&#xff0c;减少文件大小&#xff0c;通过使用工具如Webpack对代码进行打包和优化。…

【Image】图像处理

计算机视觉 CV Perception 如自动驾驶领域。 只要是从所谓的图像当中去抽取信息的过程&#xff0c;我们都叫做Perception。 视觉检测可以涵盖二维检测&#xff0c;如车辆、人和信号灯的检测。另外&#xff0c;还可以控制三维信息&#xff0c;直接在三维空间中操作数据。 SL…

Vue 3 + Vite 4 移动端低版本白屏处理

vue3打包后在低版本浏览器或webview中出现白屏&#xff0c;原因就是因为语法兼容问题。根据vite官方文档描述&#xff0c;build.target 默认支持 Chrome >87、Firefox >78、Safari >14、Edge >88 传送&#xff0c;所以需要我们手动兼容低版本。 方法&#xff1a; …

【uniapp小程序-分享】

//分享到聊天onShareAppMessage() {let shareMessage {title: this.liveInfo.wx_title,path: /subPages/livePages/liveCourse/live_course_info?courseid this.courseid,imageUrl: this.liveInfo.wx_thumb};let shearMsg uni.getStorageSync(shearImg this.courseid);if (…

L1-028 判断素数

本题的目标很简单&#xff0c;就是判断一个给定的正整数是否素数。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;≤ 10&#xff09;&#xff0c;随后N行&#xff0c;每行给出一个小于231的需要判断的正整数。 输出格式&#xff1a; 对每个需要判断的正整数&a…

鸿蒙OS:打破界限的操作系统新星

导言 鸿蒙OS&#xff08;HarmonyOS&#xff09;是华为公司为应对技术封锁而推出的分布式操作系统&#xff0c;其背后蕴含着华为构建全球数字生活愿景的雄心。本文将深入剖析鸿蒙OS的起源、核心特性&#xff0c;并展望其未来在数字生态中的角色。 1. 背景与起源 华为的…

【基础篇】1.2 认识STM32(二)

3.3 VREF/VREF-引脚 VREF和VREF-是STM32中用于提供参考电压的引脚。如下图&#xff1a; VREF引脚可以连接一个单独的外部参考电压&#xff0c;范围在2.0V&#xff5e;VDDA&#xff0c;但不能超过VDDA&#xff0c;否则就超过了模拟器件的最大供电电压。在100引脚的封装中&#…

智慧养老:创新科技让老年生活更美好

智慧养老&#xff1a;创新科技让老年生活更美好 随着人口老龄化的加剧&#xff0c;智慧养老成为了关注焦点。智慧养老以创新科技为核心&#xff0c;旨在改善老年人的生活品质、促进健康、增强安全感和社会融入感。本文将详细介绍智慧养老的关键技术和应用场景&#xff0c;带您了…

SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?

SiLM5350MDBCA-DG是一款适用于IGBT、MOSFET的单通道 隔离门极驱动器&#xff0c;具有10A拉电流和10A灌电流驱动能 力。提供内部钳位功能&#xff0c;可单独控制 上升时间和下降时间。 在 SOP8 封 装 中 具 有 3000VRMS 隔 离 耐 压 &#xff08; 符 合 UL1577&#xff09;。 与…

Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码

问题 今天在代码里面输出 console.log 信息直接指向了 vue.js&#xff0c;并且代码里面写了 debgger 也不生效 解决 f12 找到浏览器的这个设置图标 找到这个 ignore list 的 custom exclusion rules 取消掉 /node_modules/|/bower_components/ 这样就正常了

Spring / Spring Boot全局获取HttpServletRequest、HttpServletResponse对象

1.前言 你还在 Controller 传一个 HttpServletRequest 或 HttpServletResponse 到下面好几层以便获取到该对象进行处理吗&#xff1f;&#xff1f; 那就 out 咯&#xff0c;曾经我也是这么做的&#xff0c;哈哈哈~ 今天写代码想起来要获取这个对象&#xff0c;一下子想不起来叫…

Androidstudio加载编译时kotlin-compiler-embeddable一直下载中

打开网址 https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.6.10/ 1.下载jar包 2.配置下载jar文件到.gradle文件中 文件路径:/Users/“用户名”/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embedd…

思幻二次元风格的工作室个人引导页源码

思幻工作室个人引导页源码已经完成开发&#xff01;该源码支持三端自适应&#xff0c;并且具备赞助功能。我们选择了当前点赞量最高的配色方案&#xff0c;打造了一个独特的二次元风格引导页。经过在美国服务器上进行的测试&#xff0c;效果令人满意&#xff0c;网页加载速度达…

【Spring】03 容器

文章目录 1. 定义2. BeanFactory1&#xff09;惰性加载2&#xff09;基本的容器功能3&#xff09;XML配置 3. ApplicationContext1&#xff09;主动加载2&#xff09;AOP支持3&#xff09;事件发布与监听4&#xff09;国际化支持5&#xff09;注解支持 4. Spring容器的生命周期…

万兆网络之线路测速

网络测速有很多种方式&#xff0c;建议使用开源的iperf搭建测试 官方&#xff1a;iperf3&#xff08;技术网站一般不被和谐&#xff0c;有部分可能被污染&#xff09; Windows下载后解压即可运行 小技巧&#xff1a;如果你用的笔记本只有一个C盘&#xff0c;最好将免安装的软…

数据库sql语句查询补充

数据库sql语句查询补充 0.前言1.Like谓语2.带有Having当中的分组查询eg. 例题:错题重做: 3.内连接例题 0.前言 数据库期末复习,对自己做错的题进行知识总结和梳理 1.Like谓语 like谓语主要有两个操作 %:百分号,表示任意长度的字符串_:下划线,表示任意单个字符 like谓语的语…

Python学习之复习MySQL-Day8(事务)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;事务简介事务操作模拟转账操作开启事务提交事务回滚事务查看/设置事务提交方法实例演示 事务四大特性并发事务问题分类 事务隔离级别分类查看/设置事务隔离级别实例演示 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语…

TrustZone之顶层软件架构

在处理器中的TrustZone和系统架构中,我们探讨了硬件中的TrustZone支持,包括Arm处理器和更广泛的内存系统。本主题关注TrustZone系统中发现的软件架构。 一、顶层软件架构 下图显示了启用TrustZone的系统的典型软件栈: 【注意】:为简单起见,该图不包括管理程序,尽管它们可…

福德植保无人机工厂:创新科技与绿色农业的完美结合

亲爱的读者们&#xff0c;欢迎来到福德植保无人机工厂的世界。这里&#xff0c;科技与农业的完美结合为我们描绘出一幅未来农业的新篇章。福德植保无人机工厂作为行业的领军者&#xff0c;以其领先的无人机技术&#xff0c;创新的理念&#xff0c;为我们展示了一种全新的农业服…

【Filament】绘制矩形

1 前言 Filament环境搭建中介绍了 Filament 的 Windows 和 Android 环境搭&#xff0c;绘制三角形中介绍了绘制纯色和彩色三角形&#xff0c;本文将使用 Filament 绘制纯色和彩色矩形。 2 绘制矩形 本文项目结构如下&#xff0c;完整代码资源 → Filament绘制矩形。 2.1 自定义…