LeetCode Hot100 刷题笔记(9)—— 二分查找、技巧
目录
前言
一、二分查找
1. 搜索插入位置
2. 搜索二维矩阵
3. 在排序数组中查找元素的第一个和最后一个位置
4. 搜索旋转排序数组
5. 寻找旋转排序数组中的最小值
6. 寻找两个正序数组的中位数
二、技巧
1. 只出现一次的数字
2. 多数元素
3. 颜色分类
4. 下一个排列
5. 寻找重复数
前言
一、二分查找:搜索插入位置,搜索二维矩阵,在排序数组中查找元素的第一个和最后一个位置,搜索旋转排序数组,寻找旋转排序数组中的最小值,寻找两个正序数组的中位数。
二、技巧:只出现一次的数字,多数元素,颜色分类,下一个排列,寻找重复数。
一、二分查找
1. 搜索插入位置
原题链接:35. 搜索插入位置 - 力扣(LeetCode)

# 解法(1)
class Solution(object):def searchInsert(self, nums, target):if target in nums:return nums.index(target)else:nums.insert(0, float('-inf'))nums.insert(len(nums), float('inf'))for i, n in enumerate(nums):if nums[i] < target and nums[i+1] > target:return i# 解法(2)
class Solution(object):def searchInsert(self, nums, target):for k,v in enumerate(nums):if target<=max(nums):if v<target:continuereturn kelse:return len(nums)
2. 搜索二维矩阵
原题链接:74. 搜索二维矩阵 - 力扣(LeetCode)

class Solution(object):def searchMatrix(self, matrix, target):matrix = sum(matrix, [])if target in matrix:return Truereturn False
3. 在排序数组中查找元素的第一个和最后一个位置
原题链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
# 解法(1)
class Solution(object):def searchRange(self, nums, target):if target not in nums:return [-1, -1]else:left = nums.index(target)nums.sort(reverse=True)right = len(nums)- nums.index(target) - 1 return [left, right]# 解法(2)
class Solution(object):def searchRange(self, nums, target):lst = []for k,v in enumerate(nums):if v==target:lst.append(k)if not lst:lst = [-1,-1]return [min(lst), max(lst)]
4. 搜索旋转排序数组
原题链接:33. 搜索旋转排序数组 - 力扣(LeetCode)

class Solution(object):def search(self, nums, target):if target in nums:return nums.index(target)else:return -1
5. 寻找旋转排序数组中的最小值
原题链接:153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

class Solution(object):def findMin(self, nums):return min(nums)
6. 寻找两个正序数组的中位数
原题链接:4. 寻找两个正序数组的中位数 - 力扣(LeetCode)

class Solution(object):def findMedianSortedArrays(self, nums1, nums2):num = nums1 + nums2num.sort()ln = len(num) if ln % 2 == 0:mid = (num[ln//2-1] + num[ln//2]) / 2.0else:mid = num[ln//2]return mid
二、技巧
1. 只出现一次的数字
原题链接:136. 只出现一次的数字 - 力扣(LeetCode)

# 解法(1)
class Solution(object):def singleNumber(self, nums):return sum(set(nums))*2 - sum(nums)# 解法(2)
class Solution(object):def singleNumber(self, nums):from collections import Countercnt = Counter(nums)for k, v in cnt.items():if v == 1:return k
2. 多数元素
原题链接:169. 多数元素 - 力扣(LeetCode)

# 解法(1)
class Solution(object):def majorityElement(self, nums):nums.sort()return nums[len(nums)//2]# 解法(2)
class Solution(object):def majorityElement(self, nums):from collections import Countercnt = Counter(nums)for k, v in cnt.most_common(1):return k
3. 颜色分类
原题链接:75. 颜色分类 - 力扣(LeetCode)

class Solution(object):def sortColors(self, nums):return nums.sort()
4. 下一个排列
原题链接:
5. 寻找重复数
原题链接:287. 寻找重复数 - 力扣(LeetCode)

# 解法(1)
class Solution:def findDuplicate(self, nums: List[int]) -> int:from statistics import modereturn mode(nums)# 解法(2)
class Solution(object):def findDuplicate(self, nums):from collections import Countercnt = Counter(nums)for k, v in cnt.most_common(1):return k相关文章:
LeetCode Hot100 刷题笔记(9)—— 二分查找、技巧
目录 前言 一、二分查找 1. 搜索插入位置 2. 搜索二维矩阵 3. 在排序数组中查找元素的第一个和最后一个位置 4. 搜索旋转排序数组 5. 寻找旋转排序数组中的最小值 6. 寻找两个正序数组的中位数 二、技巧 1. 只出现一次的数字 2. 多数元素 3. 颜色分类 4. 下一个排列 5. 寻找重复…...
Ubuntu 系统上完全卸载 Docker
以下是在 Ubuntu 系统上完全卸载 Docker 的分步指南 一.卸载验证 二.卸载步骤 1.停止 Docker 服务 sudo systemctl stop docker.socket sudo systemctl stop docker.service2.卸载 Docker 软件包 # 移除 Docker 核心组件 sudo apt-get purge -y \docker-ce \docker-ce-cli …...
1017 Queueing at Bank
1017 Queueing at Bank 分数 25 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 Suppose a bank has K windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. All the customers have to wait in li…...
二分答案 + P8800 [蓝桥杯 2022 国 B] 卡牌 - 题解
题解:卡牌问题 题目传送门:P8800 [蓝桥杯 2022 国 B] 卡牌 一、题目描述 小明有n种卡牌,每种卡牌有a_i张。他可以用m张空白牌制作任意卡牌,但第i种卡牌最多只能制作b_i张。问最多能凑出多少套"完整卡牌"(…...
Python----计算机视觉处理(Opencv:道路检测之道路透视变换)
一、透视变换 对于道路检测来说,为了方便车辆进行行驶,道路上都有车道线,为了更加方便对道路线进行检测,首先我们要把到路线平视图转变为俯视图,以便后期处理更加方便,如下图所示,该为虚拟场景的…...
为什么 ThreadLocalMap 的 key 是弱引用 value是强引用
问题一:为什么 ThreadLocalMap 的 key 是弱引用? 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】:这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…...
AI 能解开内容的「不可能三角」吗?
3月21日,以“‘AI商业’进化论”为主题的行业峰会在中欧国际工商学院上海校区成功举行,并发布人工智能与商业创新白皮书。本次活动由中欧国际工商学院与特赞科技Tezign联合主办,中欧特赞人工智能与商业创新研究基金承办,中欧AI与营…...
计算机网络 OSI参考模型
目录 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层...
探索新一代大模型代理(LLM agent)及其架构
在人工智能大模型(AI)的浪潮中,2023年我们见证了检索增强生成(Retrieval Augmented Generation, RAG)的兴起,而2024年则无疑成为了“代理”agent的元年。各大AI企业纷纷投身于聊天机器人代理的研发中,工具如MultiOn通过与外部网站的连接实现了…...
AI应用案例(1)——智能工牌和会话质检
今天开辟一个新的模块,自己平时也搜集一些典型的行业应用案例,不如就记录到C站,同时和大家也是个分享好了。 今天分享的企业和产品,是循环智能的智能工牌。 这个产品应用场景清晰,针对的行业痛点合理,解决…...
操作系统高频(五)linux命令
操作系统高频(五)linux命令 1.Linux中查看进程运行状态的指令、tar解压文件的参数。⭐⭐⭐ 在Linux中,可以使用以下指令查看进程的运行状态: top: 用于实时监视系统的进程活动和系统资源使用情况。在终端中运行top…...
HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式
HMTLJSCSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式(可以穿墙死不了,从左边进去可以从右边出来),显示当前分数和最高分,吃到的球颜色可以叠加到蛇身体上 为了适配手机端…...
内网渗透——红日靶场二
目录 一、前期准备 DC机配置 PC机配置 WEB机配置 将PC机和WEB机的IP地址进行更改 开启WEB服务 二、外网探测 1.使用nmap扫描 2.目录扫描 3.漏洞扫描 (1)CVE-2017-3506(getshell失败) (2)CVE-201…...
【Unity】处理文字显示不全的问题
1.选中字体文件,检查 MultiAtlasTeextures 是否勾选,未勾选的话,先勾选保存后查看是否显示正常 2.勾选后未正常显示,则在搜索框中输入未显示的文本,确认字体图集是否包含该文本,然后点击Update Atlas Textu…...
深入解析力扣39.组合总和:回溯算法的妙用
题目描述 给定一个无重复元素的数组 candidates 和一个目标值 target,找出 candidates 中所有可以使数字和为 target 的组合。数组中的数字可以被重复使用。 示例: 输入: candidates [2,3,6,7], target 7 输出: [[2,2,3],[7]]代码解析 class Solut…...
汽车诊断开发入门以及OBD检测
一、OBD 概述 定义:OBD 即 On - Board Diagnostics,车载自动诊断系统。它能实时监测车辆各项系统和部件状态,以此帮助诊断故障并预警。设计初衷与发展:最初设计目的是控制汽车尾气排放,确保符合环境标准。随着技术进步…...
Android 中集成 Google 应用内评分
添加依赖 在项目的 build.gradle 文件中添加以下依赖: dependencies {// Java 依赖implementation com.google.android.play:review:2.0.1// Kotlin 依赖implementation com.google.android.play:review-ktx:2.0.1 }创建 ReviewManager 使用 ReviewManagerFactor…...
Ingredient-oriented Multi-Degradation Learning for Image Restoration论文阅读
摘要:重点在于关联多个任务本质的联系。 不同恢复任务的关联性很重要。 揭示退化现象的内在机理联系很有意义。 多合一的方法能在单一模型中处理多种退化问题,可扩展性较差。 成分导向范式挖掘不同图像退化现象背后的物理规律或特征模式。 成分导向退化重…...
避坑,c#开发人员学习开发app时.NET MAUI和Vue3 选择
经过一段时间学习vue3后才发现作为一个C#背景的开发人员从开发效率、调试便捷性、部署便利性考虑,Visual Studio + .NET MAUI 是更合适的选择,尤其是在跨平台原生应用开发场景中。以下是详细对比分析: 一、开发体验 1. 语言与生态适配 .NET MAUI:基于C#和.NET生态,与你现有…...
java项目挂机自动重启操作指南
前段时间有个伙伴问我,java项目挂机怎么自动重启。。。。。。今天就写一个 .sh脚本来实现应用挂机的自动重启功能 #!/bin/bash # 查询mita的进程个数 countps -ef | grep mita.jar | grep -v "grep" | wc -l # echo $count nowtimedate "%Y-%m-%d %H…...
Vue el-table-column内el-tooltip识别换行符 \n
结构: <el-table-column prop"callSummary" width"300" label"摘要"><template slot-scope"scope"><el-tooltip class"item" effect"dark" placement"top"><div v-ht…...
【C++指南】一文总结C++二叉搜索树
🌟 各位看官好,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C二叉搜索树的实现。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给…...
【报告】内镜视频图像分析Foundation Model
来源:医疗基础模型 仅供个人学习,侵权请联系我删除...
使用HTML5和CSS3实现炫酷的3D立方体动画
使用HTML5和CSS3实现炫酷的3D立方体动画 项目介绍 本文将详细介绍如何使用HTML5和CSS3技术实现一个交互式3D立方体动画。这个项目不仅展示了现代Web前端技术的强大功能,还能帮助读者深入理解CSS3的3D变换和动画特性。 技术栈 HTML5CSS3 (transform-style, persp…...
【春招笔试】2025.03.29-美团研发岗
📌 点击直达笔试专栏 👉《大厂笔试突围》 题目一:班级值班安排优化 1️⃣:计算员工值班时间总和 2️⃣:直接比较 n*k 与总和的大小关系 难度:简单 这道题目的核心在于数学模型的简化。通过分析平均分配的本质,我们发现只需直接比较员工数量与时间上限的乘积(n*k)和总…...
MySQL数据库和表的操作之SQL语句
🎯 本文专栏:MySQL深入浅出 🚀 作者主页:小度爱学习 MySQL数据库和表的操作 关系型数据库,都是遵循SQL语法进行数据查询和管理的。 SQL语句 什么是sql SQL:结构化查询语言(Structured Query Language)&…...
多模态大语言模型arxiv论文略读(二)
Identifying the Correlation Between Language Distance and Cross-Lingual Transfer in a Multilingual Representation Space ➡️ 论文标题:Identifying the Correlation Between Language Distance and Cross-Lingual Transfer in a Multilingual Representat…...
Windows 图形显示驱动开发-WDDM 2.1 功能(一)
WDDM 2.1 要求表 功能 适用性 供应和回收改进必需视频内存管理可选硬件保护内容的可靠性改进选择硬件支持 Windows GameDVR 的应用程序 必需 间接显示选择硬件驱动程序存储和并行安装必需适用于摄像头/捕获场景的 DirectX 内存图面共享必需 WDDM 2.1 支持以下 D3D 版本&#…...
全局曝光与卷帘曝光
文章目录 曝光方式优点缺点应用场景 为何全局曝光帧率比卷帘曝光方式低 卷帘曝光和全局曝光是CMOS传感器两种常见的曝光模式,以下是二者的对比: 参考:B站优致谱视觉 曝光方式 卷帘曝光:传感器的每一行像素按顺序逐行扫描曝光&…...
【一起来学kubernetes】31、Helm使用详解
一、Helm 简介 Helm 是 Kubernetes 的包管理工具,类比 Linux 中的 yum 或 apt,用于简化应用的打包、部署和版本管理。其核心功能包括: Chart 管理:将 Kubernetes 资源(Deployment、Service 等)打包为可复…...
