leecode代码模板

二分算法:

34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。示例 1:输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
示例 2:输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
示例 3:输入:nums = [], target = 0
输出:[-1,-1]class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int start = searlower(nums, target);int end = searupper(nums, target);if(start == nums.size() || nums[start] != target || end == -1){return {-1, -1};}return {start, end};}int searlower(vector<int>& nums, int target){int left = 0, right = nums.size()-1;while(left <= right){int mid = left + (right - left) / 2;//循环不变量://未确定区间为[left, right]//nums[left - 1] < target//nums[right + 1] >= targetif(nums[mid] < target){left = mid + 1;}else{right = mid - 1;}}return left;}int searupper(vector<int>& nums, int target){int left = 0, right = nums.size()-1;while(left <= right){int mid = left + (right - left) / 2;//循环不变量://未确定区间为[left, right]//nums[left - 1] <= target//nums[right + 1] > targetif(nums[mid] <= target){left = mid + 1;}else{right = mid - 1;}}return right;}
};

定长滑动窗口:

//假设滑动窗口固定长度为: n ,则代码模板如下:
class Solution {
public:int SlideWindow(vector<int>& nums, int k) {int length = nums.size();//在进入循环之前,必须先初始化好窗口为最左侧位置的情况//并且维护好这种情况下的相关变量//这里要首先判断一下初始化的结果是否满足题意,然后下面的第一次循环就不必//遍历第一种情况了,这么做是也是为了满足循环不变量[i - n, i)//循环不变量:滑动窗口[i - n, i),窗口长度固定为 nfor (int i = n; i < length; i++) {//此时i位置为窗口本次循环的末位置下标,由于是开区间i,所以接下来要维护nums[i]的状态//而i-n位置为上一次循环的首位下标,我们通常也需要关注维护它的状态,使窗口左边界向右移动一位//以上操作进行完毕之后,此时窗口区间就变为闭区间[i - n + 1, i]了,长度还是n//下一次循环之前i++,区间再次变为半开半闭状态-[i - n, i)}return ...;}
};

不定长滑动窗口:

//不定长滑动窗口伪代码
class Solution {
public:int SlideWindow(string s) {// 同方向移动,起始的时候,都位于 0,表示我们定义搜索区间为 [left, right) ,此时区间为空区间int left = 0;int right = 0;while(right < Slen){//每一次循环的开始,都一定不满足条件//(因为上一次循环是从满足条件跳出while的)// 这里对状态做修改,好让程序在后面检测到满足条件while(满足条件){ // 对状态做修改,好让程序在后面检测到不满足条件left++;     //右移left}//记录当前最接近结果的值right++; //右移right}return maxlen;}
};

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

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

相关文章

渗透测试基础(四) MS08-067 漏洞攻击

1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞&#xff0c;远程攻击者可以通过发送恶意的RPC请求触发这个溢出&#xff0c;导致完全入侵用户系统&#xff0c;以SYSTEM权限执行任意指令。…

太湖远大毛利率下滑:研发费用率远低同行,募投项目合理性疑点重重

《港湾商业观察》黄懿 6月20日&#xff0c;浙江太湖远大新材料股份有限公司&#xff08;以下简称“太湖远大”&#xff0c;873743.NQ&#xff09;即将迎来过会。 2023年11月30日&#xff0c;太湖远大所提交的上市申请材料正式获北交所受理&#xff0c;保荐机构为招商证券&…

功能测试 之 单模块测试----添加会员

1.需求分析 点击【添加会员】按钮后&#xff0c;页面跳转至添加会员详细页面。 说明&#xff1a; 会员昵称&#xff1a;必填&#xff0c;长度在20个字符&#xff08;除去空格&#xff09;以内&#xff0c;&#xff08;会员昵称&#xff09;可以重复&#xff1b;登录密码&#x…

关于IntelliJ IDEA 2024.1版本更新的问题

希望文章能给到你启发和灵感&#xff5e; 感谢支持和关注&#xff5e; 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、起因三、解决四、总结 序幕 近期&#xff0c;IntelliJ IDEA 推出了全新2024版本&#xff0c;相信很多编程的爱好者或者刚接触编程的小伙伴都会…

gorm简介

【1】ORM: 即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射&#xff0c;这样我们在具体的操作数据库的时候&#xff0c;就不需要再去和复杂的SQL语句打交道&#xff0c;只要像平时操作对象一样操作它们就可以了。 【2】GORM gorm是go语言的一个orm…

Linux之gzip压缩和解压缩

Linux之gzip压缩和解压缩 gzip命令是压缩和解压缩命令&#xff0c;用于操作".gz"格式的的文件。gzip对文本文件的压缩率有60%~70%。 命令格式 注意&#xff0c;选项的顺序不可变tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录 --压缩文件 tar -zxvf 打包文…

SpringBoot的冬奥会科普平台 LW +PPT+源码

3 平台分析 3.1 平台可行性分析 3.1.1 经济可行性 由于本平台是作为毕业设计平台&#xff0c;且平台本身存在一些技术层面的缺陷&#xff0c;并不能直接用于商业用途&#xff0c;只想要通过该平台的开发提高自身学术水平&#xff0c;不需要特定服务器等额外花费。所有创造及工…

【每日刷题】Day70

【每日刷题】Day70 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 922. 按奇偶排序数组 II - 力扣&#xff08;LeetCode&#xff09; 2. 905. 按奇偶排序数组 - 力扣&…

CSS--超出就显示滚动条并设置滚动条的样式

原文网址&#xff1a;CSS--超出就显示滚动条并设置滚动条的样式_IT利刃出鞘的博客-CSDN博客 简介 本文介绍HTML如何超出就显示滚动条并设置滚动条的样式。 超出就显示滚动条 方法如下&#xff1a; 第一步&#xff1a;设置父容器的高度&#xff08;height或者max-height&am…

Bigtable的数据结构

Bigtable的数据结构 1. 表&#xff08;Table&#xff09; 基本单位&#xff1a;Bigtable存储数据的基本单位是表&#xff0c;一个表由多行组成。无限制&#xff1a;表可以非常大&#xff0c;理论上没有大小限制。 2. 行&#xff08;Row&#xff09; 行键&#xff1a;每一行…

GeoServer安装启动

GeoServer 使用 servlet 容器&#xff08;例如Apache Tomcat&#xff09;打包为独立的 Java web 应用程序。以下说明专门针对 Tomcat。它可能不适用于其他容器应用程序。 在 Tomcat 上安装 导航到GeoServer 下载页面。从“已存档”中&#xff0c;选择最新的 2.18.x 版本的 GeoS…

Python12 列表推导式

1.什么是列表推导式 Python的列表推导式&#xff08;list comprehension&#xff09;是一种简洁的构建列表&#xff08;list&#xff09;的方法&#xff0c;它可以从一个现有的列表中根据某种指定的规则快速创建一个新列表。这种方法不仅代码更加简洁&#xff0c;执行效率也很…

iOS 17.6养老版发布,旧机必升?

iOS 17.6 的第一个开发者测试版已发布&#xff0c;另外还发布了macOS 14.6、watchOS 10.6、iPadOS 17.6 等。 苹果iOS系统更新一直是科技爱好者和用户关注的焦点&#xff0c;尤其是在iOS18的测试阶段&#xff0c;其吸引力尤为显著。尽管苹果同时推送了iOS17.6 Beta1&#xff0c…

linux 如何判断磁盘是HDD还是SSD

本文主要是判断磁盘是 HDD 还是不上 HDD&#xff0c;只用于直通盘的判断&#xff0c;raid盘不在内 方法一、 使用lsblk 命令判断 # 仅查看物理盘的名称、空间大小、SSD(0)? HDD(1)?, 设备供应商以及状态。 [integraTorsctyunos ~]$ lsblk -d -o NAME,SIZE,ROTA,VENDOR,STATE…

kimi+的+能为论文写作+出什么?我帮你试过了!

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 Kimi是月之暗面科技有限公司开发的个性化智能助手功能。相比kimi&#xff0c;Kimi能够提供个性化定制服务&#xff0c;根据用户特定需求提供更专业深入的辅助&#xff0c;实现一对一的智…

多线程(总结黑马程序员)

一、什么是线程&#xff1f; 是一个程序内部的一条执行流程 多线程是什么&#xff1f; 多条线程由CPU负责调度执行 多线程的创建方式一&#xff1a;继承Thread类 //1.继承Thread类 public class MyThread extends Thread {//2.必须重写run方法Overridepublic void run() {…

人工智能之AI作画

AI作画&#xff08;AI-generated Art&#xff09;是指利用人工智能技术来创作艺术作品的过程。随着深度学习和生成模型的发展&#xff0c;AI作画已经在艺术界和技术界引起了广泛关注和研究。从专业角度来看&#xff0c;AI作画涉及多个技术领域&#xff0c;包括计算机视觉、机器…

【人机交互 复习】第9章 以用户为中心的设计

一、以用户为中心的设计&#xff08;UCD&#xff09; 1.思想&#xff1a; &#xff08;1&#xff09;好的设计结果使客户感到满意。 &#xff08;2&#xff09;设计过程是设计人员与客户之间的协作过程。设计要进化并适应客户不断变化的考虑&#xff0c;作为一种副产品&#…

Clickhouse备份恢复_clickhouse-client方式backup命令之备份目录的设置

https://clickhouse.com/docs/en/operations/backup#command-summary 想要backup database dbname to Disk(‘diskname’,‘backupfilename.zip’)成功的话&#xff0c;需要符合3点 1、diskname需要在/etc/clickhouse-server/config.d/backup_disk.xml在<storage_configura…

【数据结构】【版本1.3】【线性时代】——栈

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、栈的概念二、栈的模拟实现2.1 定义2.2 初始化2.3 销毁2.4 压栈2.5 判空2.6 出栈2.7 获取栈顶元素2.8…