当前位置: 首页 > news >正文

数据结构系统刷题

本文为系统刷leetcode的记录,会记录自己根据代码随想录刷过的leetcode,方便直接点开刷题,时常更新
时间复杂度简记为s
空间复杂度简记为k

数组

704 二分查找
一维二分查找
(1)[left, right]

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while (left <= right) {int mid = (left + right) / 2;if (nums[mid] > target) {right = mid - 1;} else if (nums[mid] < target) {left = mid + 1;} else {return mid;}}return -1;}
};

s: O ( l o g n ) O(logn) O(logn)
k: O ( 1 ) O(1) O(1)
(2)[left, right)

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size();while (left < right) {int mid = (left + right) / 2;if (nums[mid] > target) {right = mid;} else if (nums[mid] < target) {left = mid + 1;} else return mid;}return -1;}
};

s: O ( l o g n ) O(logn) O(logn)
k: O ( 1 ) O(1) O(1)
二维二分查找:74. 搜索二维矩阵

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();int n = matrix[0].size();int low = 0;int high = m * n - 1;while (low <= high) {int mid = (low + high) / 2;int num = matrix[mid / n][mid % n]; // 第一个是确定第几行,第二个是确定第几列,相当于把matrix降维成一维,比如要找一个4*4数组的第13个元素,13/4 = 3,为第四行(行索引是0开始),13%4=1,即第四行第一个if (num < target) {low = mid + 1;} else if (num > target) {high = mid - 1;} else return true;}return false;}
};

27. 移除元素

class Solution {
public:int removeElement(vector<int>& nums, int val) {int slow = 0;for (int fast = 0; fast < nums.size(); fast++) {if (nums[fast] != val) {nums[slow++] = nums[fast];}}return slow;}
};

s: O ( n ) O(n) O(n)
k: O ( 1 ) O(1) O(1)

977. 有序数组的平方

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int k = nums.size() - 1;vector<int> result(nums.size(), 0);for (int i = 0, j = nums.size() - 1; i <= j;) {if (nums[i] * nums[i] > nums[j] * nums[j]) {result[k--] = nums[i] * nums[i];i++;} else {result[k--] = nums[j] * nums[j];j--;}}return result;}
};

s: O ( n ) O(n) O(n)
k: O ( n ) O(n) O(n)
209. 长度最小的子数组

59. 螺旋矩阵 II

相关文章:

  • 【vue】图片加载骨架
  • 如何做好一份全面的市场调查报告?
  • 2024年数学建模美赛 分析与编程
  • USB-C显示器:未来显示技术的革新者
  • 【Docker】linux、nginx、容器镜像三者基本概念
  • Windows系统安装OpenSSH+VS Code结合内网穿透实现远程开发
  • 【论文阅读】Long-Tailed Recognition via Weight Balancing(CVPR2022)附MaxNorm的代码
  • Android Handler完全解读
  • C语言 | 求最大/小值小技巧:fmax、fmin函数
  • 正则表达式 文本三剑客
  • 2024 年, Web 前端开发趋势
  • JAVA项目扩展-多数据库连接(实现一个简单的数据库jdbc连接池)
  • 第十章 单调栈part02(● 503.下一个更大元素II ● 42. 接雨水 )
  • R语言学习case7:ggplot基础画图(核密度图)
  • Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析
  • 【个人向】《HTTP图解》阅后小结
  • ES6 学习笔记(一)let,const和解构赋值
  • k个最大的数及变种小结
  • LintCode 31. partitionArray 数组划分
  • opencv python Meanshift 和 Camshift
  • rc-form之最单纯情况
  • Terraform入门 - 1. 安装Terraform
  • 诡异!React stopPropagation失灵
  • 基于HAProxy的高性能缓存服务器nuster
  • 开源地图数据可视化库——mapnik
  • 力扣(LeetCode)357
  • 聊聊directory traversal attack
  • 如何设计一个微型分布式架构?
  • 什么软件可以剪辑音乐?
  • 什么是Javascript函数节流?
  • 温故知新之javascript面向对象
  • ​低代码平台的核心价值与优势
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.2 T2 寻找道路
  • #Z2294. 打印树的直径
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3)llvm ir转换过程
  • (C#)获取字符编码的类
  • (poj1.3.2)1791(构造法模拟)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (理论篇)httpmoudle和httphandler一览
  • (六)vue-router+UI组件库
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (一) storm的集群安装与配置
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET建议使用的大小写命名原则
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net流程开发平台的一些难点(1)