【leetcode64-69二分查找、70-74栈、75-77堆】

二分查找[64-69]

时间复杂度O(log n),要想到二分排序

35.搜索插入位置

在这里插入图片描述

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left = 0right = len(nums)-1while left <= right:  #左闭右闭mid = (left+right)//2if nums[mid] < target:left = mid + 1elif nums[mid] > target:right = mid -1else: return midreturn mid+1 if nums[mid] < target else mid

74.搜索二维矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m = len(matrix)  #行n = len(matrix[0])  #列left = 0right = m*n -1while left <= right:mid = (left+right)//2i = mid // nj = mid % nif matrix[i][j] < target:left = mid + 1elif matrix[i][j] > target:right = mid - 1else:return Truereturn False

34.在排序数组中查找元素的第一个和最后一个位置

在这里插入图片描述

class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:if len(nums) == 0: return [-1,-1]left = 0right = len(nums)-1while left <= right:mid = (left+right)//2if nums[mid] < target:left = mid +1elif nums[mid] > target:right = mid-1else :i = j = midwhile i>=0 and nums[i] == target:i -= 1while j<len(nums) and nums[j] == target:j += 1return [i+1, j-1]return [-1,-1]
# 1、首先,在 nums 数组中二分查找得到第一个大于等于 target的下标leftBorder;
# 2、在 nums 数组中二分查找得到第一个大于等于 target+1的下标, 减1则得到rightBorder;
# 3、如果开始位置在数组的右边或者不存在target,则返回[-1, -1] 。否则返回[leftBorder, rightBorder]
class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:def binarySearch(nums:List[int], target:int) -> int:left, right = 0, len(nums)-1while left<=right: # 不变量:左闭右闭区间middle = left + (right-left) //2 if nums[middle] >= target: right = middle - 1else: left = middle + 1return left  # 若存在target,则返回第一个等于target的值 leftBorder = binarySearch(nums, target) # 搜索左边界rightBorder = binarySearch(nums, target+1) -1  # 搜索右边界if leftBorder == len(nums) or nums[leftBorder]!= target: # 情况一和情况二return [-1, -1]return [leftBorder, rightBorder]

33.搜索旋转排序数组

在这里插入图片描述

class Solution:def search(self, nums: List[int], target: int) -> int:left = 0right = len(nums)-1while left<= right:mid = (left+right)//2   #mid要么左边升序,要么右边升序if nums[mid] == target: return midelif nums[mid] < nums[right]:   #[mid,right]右边升序if target > nums[mid] and target <= nums[right]: #target在区间(mid,right]left = mid +1else: right = mid-1else:   #[left, mid],左边升序if target >= nums[left] and target < nums[mid]: #target在区间[left, mid)right = mid -1else: left = mid +1 return -1

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7dcdd12d410747f98f3018ebdd83b7d7.png

4.寻找两个正序数组的中位数

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

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

相关文章

【算法训练记录——Day39】

Day39——动态规划Ⅱ 1.leetcode_62不同路径2.leetcode_63不同路径Ⅱ3.leetcode_343整数拆分4.leetcode_96不同的二叉树搜索 1.leetcode_62不同路径 思路&#xff1a;经典的动态规划问题&#xff1a; dp[i][j]表示到达&#xff08;i&#xff0c;j&#xff09;位置时的不同路径…

运维锅总浅析云原生DevOps工具

本文从Tekton与Kubevela、Jenkins、GitLab CI的区别与联系对常见的云原生DevOps工具进行对比分析&#xff0c;最后给出DevOps工具选型思路。希望对您有所帮助&#xff01; 一、DevOps简介 DevOps是一种结合了软件开发&#xff08;Development&#xff09;和IT运维&#xff08…

登录功能和校验

基础版 controller package com.web.management.controller;import com.web.management.pojo.Emp; import com.web.management.pojo.Result; import com.web.management.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.anno…

Ignis 应用: 社交 + 游戏 + 工业4.0,Ignis 构建Web3生态圈

引言 在数字经济快速发展的今天&#xff0c;Web3技术为我们带来了前所未有的变革。作为Ardor平台的主要子链&#xff0c;Ignis公链在推动Web3生态系统建设中扮演了重要角色。本文将通过介绍Vessel Chain、Mythical Beings和Bridge Champ等应用&#xff0c;探讨Ignis公链如何通…

html+css+js文章模板

图片 源代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢&#x1f604; 源代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width,…

停车场车牌识别计费系统,用Python如何实现?

关注星标&#xff0c;每天学习Python新技能 前段时间练习过的一个小项目&#xff0c;今天再看看&#xff0c;记录一下~ 项目结构 说明&#xff1a; datefile文件夹&#xff1a;保存车辆信息表的xlsx文件 file文件夹&#xff1a;保存图片文件夹。ic_launcher.jpg是窗体的右上角…

周下载量20万的npm包---store

https://www.npmjs.com/package/store <script setup> import { onMounted } from vue import store from storeonMounted(() > {store.set(user, { name: xutongbao })let user store.get(user)console.log(user) //对象console.log(localStorage.getItem(user)) //…

CesiumJS【Basic】- #056 绘制纹理填充多边形(Entity方式)-使用shader

文章目录 绘制纹理填充多边形(Entity方式)-使用shader1 目标2 代码2.1 main.ts绘制纹理填充多边形(Entity方式)-使用shader 1 目标 使用Entity方式绘制绘制纹理填充多边形 - 使用shader 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium…

搭建个人博客及错误记录

搭建个人博客及错误记录 文章目录 搭建个人博客及错误记录需要用到的网址2.推荐两个参考教学视频3.发布一篇博客个人主题配置的提醒localhost拒绝连接问题解决办法ssh -T gitgithub.com失败问题解决Deployer not found:git解决 可以根据目录解决遇到的相同问题 需要用到的网址 …

朋友圈运营必备!一键转发和自动转发轻松搞定!

你还在手动发布多个微信号的朋友圈吗&#xff1f; 现在&#xff0c;就教你一招&#xff0c;让你轻松实现一键转发和自动转发朋友圈&#xff01; 首先&#xff0c;我们需要在个微管理系统上登录自己的微信号&#xff0c;以便进行统一管理。这个系统可以多个微信号同时登录&…

项目经验-不同行业、不同风格的网站设计

网站UI设计的首要考虑点是布局与导航。合理的布局能够确保信息清晰呈现&#xff0c;使用户能够快速定位所需内容。同时&#xff0c;简洁明了的导航设计能够引导用户流畅浏览&#xff0c;减少迷失感。通过精心设计的布局和导航&#xff0c;可以提升用户体验&#xff0c;增强用户…

Pointnet++改进即插即用系列:全网首发GLSA聚合和表示全局和局部空间特征|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入GLSA,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介…

深入剖析Tomcat(十五、十六) 关闭钩子,保证Tomcat的正常关闭

《深入剖析Tomcat》书中第十五章讲解了如何通过配置XML的方式来配置Tomcat的各个组件&#xff0c;并通过Digester库来解析XML。我们常操作的xml文件应该就是 server.xml这个文件&#xff0c;当在一台机器上部署多个Tomcat时&#xff0c;就必须修改连接器和 [“关闭Tomcat”程序…

Spring源码九:BeanFactoryPostProcessor

上一篇Spring源码八&#xff1a;容器扩展一&#xff0c;我们看到ApplicationContext容器通过refresh方法中的prepareBeanFactory方法对BeanFactory扩展的一些功能点&#xff0c;包括对SPEL语句的支持、添加属性编辑器的注册器扩展解决Bean属性只能定义基础变量的问题、以及一些…

Netty 粘包/拆包、解码工具类

1. 概述 1.1 粘包 发送 abc def&#xff0c;接收 abcdef 原因 滑动窗口&#xff1a;假设发送方 256 bytes 表示一个完整报文&#xff0c;但由于接收方处理不及时且窗口大小足够大&#xff0c;这 256 bytes 字节就会缓冲在接收方的滑动窗口中&#xff0c;当滑动窗口中缓冲了…

模拟 ADC 的前端

ADC 的 SPICE 模拟 反复试验的方法将信号发送到 ADC 非常耗时&#xff0c;而且可能有效也可能无效。如果转换器捕获电压信息的关键时刻模拟输入引脚不稳定&#xff0c;则无法获得正确的输出数据。SPICE 模型允许您执行的步是验证所有模拟输入是否稳定&#xff0c;以便没有错误…

尝试修改苍穹外卖为”李小罗餐厅“

学习苍穹外卖后&#xff0c;将其修改为自己所需要的项目&#xff0c;也是对苍穹外卖项目的加深理解 对项目之间的连接等关系进一步清晰&#xff0c;那么便开始吧 d1_开始修改 修改名字为”李小罗餐厅“ src\views\login\index.vue src\router.ts 结果展示 修改进来之后的展示…

上海站圆满结束!MongoDB Developer Day深圳站,周六见!

在过去两个周六的北京和上海 我们见证了两站热情高涨的 MongoDB Developer Day&#xff01; 近200位参会开发者相聚专业盛会 经过全天的动手实操和主题研讨会 MongoDB技能已是Next Level&#xff01; 最后一站Developer Day即将启程 期待本周六与各位在深圳相见&#xff0…

【Docker安装】OpenEuler系统下部署Docker环境

【Docker安装】OpenEuler系统下部署Docker环境 前言一、本次实践介绍1.1 本次实践规划1.2 本次实践简介二、检查本地环境2.1 检查操作系统版本2.2 检查内核版本2.3 检查yum仓库三、卸载Docker四、部署Docker环境4.1 配置yum仓库4.2 检查可用yum仓库4.3 安装Docker4.4 检查Docke…

Python题解Leetcode Hot100之矩阵

1. 矩阵置零 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路 题目要求进行原地更改&#xff0c;也就是不能使用额外的空间&#xff0c;因此我们可以使用第一行的元素来记录对应的…