LeetCode刷题总结文档

news2024/11/27 2:16:31

前言

本文的刷题顺序依照代码随想录进行,因此题目板块的划分也和代码随想录一致。每个版块我会按照以下内容进行组织:

  • 该类型题目的特征
  • 时间复杂度
  • 值得一讲的相关题目知识

正文

数组

二分查找

  • 特征:有序数组中找特定组合快速查询方法
  • 时间复杂度: O ( l o g n ) O(logn) O(logn)
  • 值得一讲的相关题目知识:
    • 对于求平方根的题目:#69 x的平方根和#367 有效的完全平方数
      • 如果是截取式返回,便可以将其转化成一个查找问题,采用二分法快速定位到应截取的整数平方根;也可以采用牛顿迭代法, x n + 1 = x n − f ( x n ) / f ′ ( x n ) x_{n+1}=x_n-f(x_n)/f'(x_n) xn+1=xnf(xn)/f(xn),但需要注意的是,面对截取式返回而采用牛顿迭代法,必须保证f(x)的单调性,同时初始取值必须大于截取的整数平方根,否则可能出现1.99999被截取为1的情形(正确值应该是2)

移除元素 & 有序数组的平方 & 长度最小的子数组

  • 特征
    • 要求只遍历一遍数组就解决问题,不要重复遍历
    • 要求原地操作,最好不使用新的空间来存储数组
  • 时间复杂度: O ( n ) O(n) O(n),空间复杂度: O ( 1 ) O(1) O(1)
  • 值得一讲的相关题目知识:
    • 该类题目在只遍历一遍数组的限制下,核心要义就是使用双指针,通过指针的不同作用,来完成原地操作更新值的需求。
      • 比如#26 删除有序数组中的重复项和#283 移动零使用的快慢指针,快指针用来遍历数组,慢指针则用来指向更新位置
      • 或者#977 有序数组的平方中双指针分别指向首和尾,从首尾两个方向依序从大到小插入至新数组
      • 又如#209 长度最小的子数组,采用滑动窗口思想,双指针分别代表窗口的起始和终止位置,窗口内的累加和始终保持小于目标值的状态,每遇到一次大于等于情况发生,记录一次最小长度
      • 还有#76 最小覆盖子串,也是采用滑动窗口思想,窗口内始终保持小于覆盖目标字符串状态

螺旋矩阵

  • 特征
    • 要求按照→↓←↑的顺序遍历二维数组(因为该顺序像螺旋一样,故得名)
  • 时间复杂度: O ( n 2 ) O(n^2) O(n2),空间复杂度: O ( 1 ) O(1) O(1)
  • 我的解题思路:在这里,我对边界的设置与代码随想录的想法不同,左右视为列遍历,由column控制for循环上限;上下视为行遍历,由row控制for循环上限。每执行完一次列/行遍历,row/column减一上限。直至row或column其中一个为0。该方案的好处是完全不需要关心矩阵最后一行/列如何特殊处理,都是由一个统一原则控制,代码如下

总结

数组部分的困难题目主要体现在字符串的各种操作上,如#76 最小覆盖子串这种。这种类型虽然难,但我总结出了两条通用的技巧:

  • 大多采用滑动窗口法,通过滑动窗口来保证一次遍历完成任务
  • 记住ASCII码上限为128,可通过**int[128]**来表示所有ASCII的映射,比利用Map进行相关操作更加简洁

在这里插入图片描述

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

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

相关文章

如何查询域名是否备案,域名备案批量查询方法

所有备案的域名都是需要通过工信部审核,录入到系统才可正式使用,所以我们在工信部的网站查询域名是否由备案信息就可以辨别出此域名是否有备案了。但是,大多数站长少则几十个域名,几千几万域名也是有的,如果还是在工信…

kong网关使用记录

kong 是一个api网关,类似nginx的网关,一般用于api服务的管理 kong 可以从consul中通过dns获取服务路由,可以自动实现负载均衡 kong kong最新版没有了conteos的安装文档,现在用Ubuntu来安装kong 1 下载kong curl -Lo kong-enter…

ERROR: Failed building wheel for box2d-py 解决方法

当我们在一个全新的Python环境中构建一个AI/ML项目时,往往会在pip install -r requirements.txt阶段遇到这样一个错误: Building wheel for box2d-py (setup.py) ... error .... swig.exe -python -c -IBox2D -small -O -includeall -ignoremissing -w2…

Java中常见的注解

一、注解 二、三种JDK内置的基本注解 1、Override 表示该方法是重写的父类方法。 为什么要写Override? 其实方法前不写Override是ok的,并且仍然是重写了父类方法。However!如果方法前有Override注解,编译器就会去检查该方法是否真…

ToB SaaS公司如何低成本高效获客

今年SaaS行业有些冷,如何过冬成了热门话题。原来天天对外讲帮客户降本增效,现在自个儿降本增效。调整组织架构,精简人员,砍预算,大抵都要来一遍。隔三岔五听说某家公司裁员,某家公司工资减半。市场预算自然…

CSS基础总结(一)

文章目录 一、CSS概述 (1)简介 (2)语法规范 (3)代码风格 二、CSS基础选择器 (1)标签选择器 (2)类选择器 (3)多类名选择器 &am…

STM32F103xx随记

关于STM32F103xx单片机的一些零碎知识,随时整理下来,方便查阅。 STM32F103xx随记STM32 & STM8 命名STM32F103xx引脚定义表引脚信息芯片手册地址大佬那里抄来的图STM32F103xxADC笔记STM32 & STM8 命名 STM32F103xx引脚定义表 今天在给新的模块添…

直播弹幕系统(二)- 整合RabbitMQ进行消息广播和异步处理

直播弹幕系统(二)- 整合RabbitMQ进行消息广播和异步处理前言一. Socket服务整合RabbitMQ二. 弹幕服务创建2.1 创建一个公共maven项目2.2 弹幕服务项目创建2.2.1 创建队列和广播型交换机2.2.2 生产者发送最终弹幕数据2.2.3 消费者监听原始弹幕数据2.3 Soc…

安卓11上的存储权限问题

这篇文章,想来发布的有些晚了,安卓11已经发布多时了,关于安卓11上的存储权限变更的文章数不胜数,所以这篇文章只做为自己的一个简单的记录吧! 在说11之前,我们先回忆以下10上存储权限的变更:每…

GaiaX开源解读 | 给Stretch(Rust编写的Flexbox布局引擎)新增特性,我掉了好多头发

GaiaX(盖亚),是在阿里文娱内广泛使用的Native动态化方案,其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》,带大家看看过去三年GaiaX的发展过程。 GaiaX的布局方案 - Flexbox 阿里文娱业务作为一个内容分发…

Linux调试器——gdb

gdb什么是gdbdebug与releasegdb的基本操作查看代码与断点执行与调试监视变量什么是gdb 之前用的一直都是VS编译器进行调试,调试是一个非常重要的过程,在Linux中调试需要用到一个工具就是gdb。 在调试思路上VS编译器和gdb是一样的,但是调试过…

【云原生进阶之容器】第一章Docker核心技术1.5.1节——cgroup综述

1. cgroups概述 1.1 为什么需要cgroup 在Linux里,一直以来就有对进程进行分组的概念和需求,比如session group, progress group等,后来随着人们对这方面的需求越来越多,比如需要追踪一组进程的内存和IO使用情况等,于是出现了cgroup,用来统一将进程进行分组,并在分组的…

51单片机——静态数码管实验,小白讲解

数码管介绍: 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多…

中国计算机大会CNCC【笔记】

中国计算机大会CNCC【笔记】前言推荐中国计算机大会CNCCCNCC 青年精英思想秀主题:当呼吸化为空气——物联网安全云原生一站式数据管理与服务 : 构建云计算数据平台生态计算产业未来应用场景与创新方向展望用开源打造云原生数据库的生态系统CCF 优博的培养与成长最后…

华为HI第二款车,阿维塔11的智能化有什么特点?

作者 | 德新 编辑 | 于婷阿维塔11,这款车不用过多介绍,长安 x 宁德 x 华为 3家联合打造。外观独特,在宝马17年的顶尖设计师Nader Faghihzadeh主导的设计;用料也很足,90度 - 116度的电池,34.99万的起售价&am…

利用 ALV 实现增删改查系列之一:让 ALV 报表进入可编辑状态试读版

在 CSDN 和我的知识星球里有朋友向我提出同样的问题,询问如何在 ALV 里实现增删改查操作。 虽然需求只有一句话,但是这个需求背后涉及到的知识点不少,因此笔者会通过几篇文章的篇幅,来介绍这个需求的详细实现步骤。 本文先解决第…

【Linux学习】之访问命令行

【Linux学习】之访问命令行 文章目录【Linux学习】之访问命令行一、基础知识二、练习1.使用 date 命令来显示当前的日期和时间。2.以12小时制显示当前时间(例如,11:42:11AM)。3. 查看/home/student/zcat 的文件类型,是否被人读取?4.使用wc命令和 Bash 快…

看过来,2022最后一期大咖说-大厂可观测来啦~

可观测性的应用创新与落地研讨会 「UGeek大咖说-大厂可观测」 最后一期 活动时间:2022/12/21 15:00 — 17:30 活动平台:线上网络直播间 主办单位:优维科技 内容介绍 白驹过隙,转眼就到了2022年末啦~ 「UGeek大咖说-大厂可观…

A. Tower(暴力 + 看数据范围)

Problem - A - Codeforces 彭教授建造了n个不同高度的积木塔。第i座塔的高度为ai。 寿教授不喜欢这些塔,因为它们的高度是任意的。他决定首先精确地移除其中的m个,然后执行以下一些(或不执行)操作。 选择一座塔,将其…

MongoDB——Java Client API(Spring Data MongoDB)

[TOC](MongoDB——Java Client API(Spring Data MongoDB)) MongoDB——Java Client API(Spring Data MongoDB) 关于文档注解 由于mongoDB使用是BSON进行存储,Java则是类与对象的概念,所以设计了一套注解用于标注 Document 范围:类 作用&…