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

(78)删除有序数组中的重复项(79)排序矩阵查找

文章目录

  • 1. 每日一言
  • 2. 题目(78)删除有序数组中的重复项
    • 2.1 解题思路
    • 2.2 代码
  • 3. 题目(79)排序矩阵查找
    • 3.1 解题思路
    • 3.1.1 暴力查找
      • 暴力查找代码
    • 3.1.2 二分查找
      • 二分查找代码
    • 3.1.3 贪心
      • 贪心代码
  • 4. 结语


1. 每日一言

水晶帘动微风起,满架蔷薇一院香。 —高骈-


2. 题目(78)删除有序数组中的重复项

题目链接:删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。
判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = […]; // 输入数组
int[] expectedNums = […]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
如果所有断言都通过,那么您的题解将被 通过。

  • 示例 1:
    输入:nums = [1,1,2]
    输出:2, nums = [1,2,_]
    解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

  • 示例 2:
    输入:nums = [0,0,1,1,1,2,2,3,3,4]
    输出:5, nums = [0,1,2,3,4]
    解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

提示:
1 <= nums.length <= 3 * 104
-104 <= nums[i] <= 104
nums 已按 非严格递增 排列


2.1 解题思路

使用双指针法

  1. 一个指针fast用于遍历数组元素,另一个指针slow用来指示当前有效的元素位置。
  2. 当fast指向的元素与slow指向的元素相同时,表示有重复元素,fast继续向前移动。
  3. 当fast指向的元素与slow指向的元素不同时,表示发现了新的不重复元素,将其复制到slow的下一个位置,然后同时移动fast和slow指针。
  4. 最终返回slow加1,即为去重后数组的长度。

2.2 代码

int removeDuplicates(int* nums, int numsSize) {int fast = 0;int slow = 0;while(fast < numsSize) {if(nums[fast] == nums[slow]) {fast++;} else {slow++;nums[slow] = nums[fast++];}}return slow+1;
}

3. 题目(79)排序矩阵查找

题目链接:排序矩阵查找

给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。

  • 示例:
    现有矩阵 matrix 如下:
    [
    [1, 4, 7, 11, 15],
    [2, 5, 8, 12, 19],
    [3, 6, 9, 16, 22],
    [10, 13, 14, 17, 24],
    [18, 21, 23, 26, 30]
    ]
    给定 target = 5,返回 true。
    给定 target = 20,返回 false。

3.1 解题思路

3.1.1 暴力查找

通过两层嵌套的循环遍历整个矩阵,将目标值与矩阵中的每一个元素进行比较。如果找到了与目标值相等的元素,则返回true;否则遍历完整个矩阵后,返回false。

暴力查找代码

bool searchMatrix(int** matrix, int matrixSize, int matrixColSize, int target){for(int i = 0; i < matrixSize; i++) {for(int j = 0; j < matrixColSize;j++) {if(matrix[i][j] == target) {return true;}}}return false;
}

3.1.2 二分查找

在每行进行二分查找,对每一行进行有序数组的二分查找。如果找到了与目标值相等的元素,则返回 true;否则在遍历完整个矩阵后,返回 false。

二分查找代码

bool searchMatrix(int** matrix, int matrixSize, int matrixColSize, int target){for(int i = 0; i < matrixSize;i++) {int left = 0;int right = matrixColSize-1;while(left <= right) {int mid = left + (right - left)/2;if(matrix[i][mid] < target) {left = mid + 1;} else if(matrix[i][mid] > target) {right = mid - 1;} else {return true;}}}return false;
}

3.1.3 贪心

通过维护两个指针i和j,它们的初始位置分别为矩阵的右上角元素。然后根据当前元素与目标值的大小关系,逐步向左下角移动指针,直到找到目标值或者超出矩阵边界。

具体来说,如果当前元素大于目标值,则目标值不可能在当前元素所在的列,因此j减1;如果当前元素小于目标值,则目标值不可能在当前元素所在的行,因此i加1。通过这种方式,可以迅速缩小搜索范围,直到找到目标值或者遍历完整个矩阵。

贪心代码

bool searchMatrix(int** matrix, int matrixSize, int matrixColSize, int target){int i = 0;int j = matrixColSize - 1;while(i < matrixSize && j >= 0) {if(matrix[i][j] > target) {--j;} else if(matrix[i][j] < target) {++i;} else {return true;}} return false;
}

4. 结语

请给自己些耐心,不要急于求成。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


相关文章:

(78)删除有序数组中的重复项(79)排序矩阵查找

文章目录 1. 每日一言2. 题目(78)删除有序数组中的重复项2.1 解题思路2.2 代码 3. 题目(79)排序矩阵查找3.1 解题思路3.1.1 暴力查找暴力查找代码 3.1.2 二分查找二分查找代码 3.1.3 贪心贪心代码 4. 结语 1. 每日一言 水晶帘动微风起&#xff0c;满架蔷薇一院香。 —高骈- 2.…...

elasticSearch从零整合springboot项目实操

type会被弃用 &#xff0c;就是说之后的elasticSearch中只会存在 索引&#xff08;indices&#xff09; 和 一行&#xff08;document&#xff09; 和字段&#xff08;fields&#xff09; elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…...

【Linux实践室】Linux高级用户管理实战指南:用户所属组变更操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux查看用户所属组2.1.1 &#x1f47b;使…...

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中&#xff0c;我们将继续学习字符串函数&#xff0c;准备好了吗&#xff1f;开始咯&#xff01; 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数&#xff0c;它用于将一个字符串的一部分内容…...

WPF 数据绑定类属性 和数据更新

WPF中数据绑定是一个非常强大的功能&#xff0c;不仅可以绑定后台数据&#xff0c;还可以进行实时更新。 数据绑定实例 : 在后台创建模型类&#xff0c;然后在标签页面进行导入并绑定。 第一步: // 在后台创建模型类 public class MyData {public string Name { get; set; }…...

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…...

unity的引用传递和数组的联系

引用传递 //引用传递 static void SetY(out int x,out int y ){x 0;y 0;x 1000;}static void Main(string[] args){int x 0;int y 10;SetY(out x, out y);Console.WriteLine($"x{x},y{y}");} 结果是&#xff1a;x1000&#xff0c;y0 数组的引用传递 数组值…...

Android bug Unresolved reference: BR

新建项目后 导入viewBinding 编译后提示 Unresolved reference: BR 解决办法 app 目录下 build.gradle 中 plugins 节点 添加 id kotlin-kapt参考 https://stackoverflow.com/questions/77409050/could-not-find-androidx-corecore-ktx1-8-10...

Unity DOTS1.0 入门(1) ECS机制与概述

ECS机制与概述 Entity:实体 由一个一个的Component组合在一起&#xff0c;是连续的内存布局。通过EnitityManager来负责高效的分配和释放相关entity. World:世界 一个entity的集合,在当前世界里面&#xff0c;每个Entity都有唯一不同的entityld;运行时Unity会自动创建一个D…...

root管理员用户启动kibana报错

问题描述: CentOS7.9.2009环境,以root管理员用户启动kibana7.11.1程序报如下错误: Kibana should not be run as root. Use --allow-root to continue. [root@elasticsearch bin]# whoami root [root@elasticsearch bin]# pwd /usr/local/kibana-7.11.1-linux-x86_64/bi…...

【leetcode面试经典150题】50. 插入区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

第二期书生浦语大模型训练营第三次笔记

RAG RAG是什么&#xff1f; RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息片段&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…...

SpringMVC(一)【入门】

前言 学完了大数据基本组件&#xff0c;SpringMVC 也得了解了解&#xff0c;为的是之后 SpringBoot 能够快速掌握。SpringMVC 可能在大数据工作中用的不多&#xff0c;但是 SSM 毕竟是现在就业必知必会的东西了。SpringBoot 在数仓开发可能会经常用到&#xff0c;所以不废话学吧…...

SQL Server详细使用教程

SQL Server 是 Microsoft 公司开发的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储和检索数据。以下是 SQL Server 的详细使用教程&#xff1a; 目录 1. 安装 SQL Server 2. 连接到 SQL Server 3. 创建数据库 4. 创建数据表 5. 插入数据 6. 查…...

Spring Boot项目启动时执行指定的方法

项目场景&#xff1a; 本文介绍Spring Boot项目启动时执行指定的方法两种常用方式和他们之间的区别。 实现方案&#xff1a; 方式一&#xff1a;使用注解PostConstruct Component public class PostConstructTest {PostConstructpublic void postConstruct() {System.out.prin…...

红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU&#xff08;支持GNSS&#xff09;项目概述 RTU&#xff08;Remote Terminal Unit&#xff09;&#xff0c;中文即远程终端控制系统&#xff0c;负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置&#xff0c;通常由信号输入/出模块、微…...

在 Mac 上配置高级内容缓存设置

在 Mac 上配置高级内容缓存设置 您可以使用高级配置参数针对网络配置微调内容缓存。 您可以在“终端”中使用命令行或通过修改“/资源库/Preferences/com.apple.AssetCache.plist”文件中的键值&#xff0c;来设定内容缓存的高级配置参数。若要使某些更改生效&#xff0c;必须…...

算法与数据结构 顺序栈(C++)

随机产生10个100以内的整数建立一个顺序栈&#xff0c;从栈顶到栈底依次显示栈内元素&#xff1b;从键盘输入出栈元素个数 n (1< n <10)&#xff0c;将 n 个元素依次出栈并显示出栈元素&#xff0c;再显示此时栈顶元素。 #include <iostream> #include <cstd…...

【WSL】在WIN11安装并使用Linux子系统(Ubuntu)

前言&#xff1a; 最近买了4060Ti 16G&#xff0c;可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux&#xff0c;发现没有办法加载GPU&#xff08;或者另外有办法没找到&#xff09;。所以只剩下了两条路&#xff1a;要么搞双系统&#xff0c;要么使用WSL&#xff08;W…...

【vim 学习系列文章 20 -- a:mode 的值有哪些?】

请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些? 在 Vim 脚本语言中&#xff0c;a:mode 常常用于函数内部&#xff0c;以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…...

sed命令多行处理

1. sed 如何工作的 sed 维护两个空间&#xff1a; 模式空间保留空间 sed是以行为周期来处理文本的。 sed从输入流中读取一行&#xff0c;去掉最后的换行符&#xff0c;把它放入模式空间。随后执行命令&#xff0c;每个命令都有关联的地址和条件&#xff0c;只有匹配时才执行…...

Secure Copy Protocol or SCP - 安全拷贝协议

Secure Copy Protocol or SCP - 安全拷贝协议 1. scp 文件传输1.1. 将远程文件拷贝到本地1.2. 将本地文件拷贝到远程1.3. 将远程目录拷贝到本地 References Secure Copy (remote file copy program) The SCP program is a software tool implementing the SCP protocol as a s…...

Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点

在Java中&#xff0c;值传递和引用传递是两种不同的参数传递机制。它们在Java程序中扮演着重要的角色&#xff0c;影响着方法如何接收和处理参数。了解这两种传递机制对于编写高效、可靠的Java代码至关重要。 值传递&#xff08;Pass by Value&#xff09; 值传递是指在调用方…...

Java 基于微信小程序的智能停车场管理小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

python基础——类型注解【变量,函数,Union】

&#x1f4dd;前言&#xff1a; 上一篇文章Python基础——面相对象的三大特征提到&#xff0c;python中的多态&#xff0c;python中&#xff0c;类型是动态的&#xff0c;这意味着我们不需要在声明变量时指定其类型。然而&#xff0c;这可能导致运行时错误&#xff0c;因为我们…...

人工智能研究生前置知识—科学计算库numpy

人工智能研究生前置知识—科学计算库numpy numpy是python中做科学计算的基础库&#xff0c;对数组进行操作 整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充 创建数组&#xff08;矩阵 &#xff09; 创建的ndarray数组…...

element UI 设置type=“textarea“ 禁止输入框缩放

背景 在 Element UI 中&#xff0c;当您使用 el-input 组件并设置 type"textarea" 时&#xff0c;默认情况下&#xff0c;用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为&#xff0c;需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…...

Rust腐蚀服务器常用参数设定详解

Rust腐蚀服务器常用参数设定详解 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式&#xff0c;其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 &#xff08;注本文中xxxx…...

无人机巡检技术革命性变革光伏电站运维管理

在中国广袤的大地上&#xff0c;光伏电站如雨后春笋般崛起&#xff0c;晶体硅组件板在阳光下熠熠生辉&#xff0c;为人们带来了源源不断的绿色能源。然而&#xff0c;随着光伏产业的迅猛发展&#xff0c;电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入&#xff0c;…...

【学习】软件信创测试中,如何做好兼容性适配

在软件信创测试的领域中&#xff0c;兼容性适配是至关重要的一环。如何确保软件在不同的操作系统、硬件设备和软件环境中稳定运行&#xff0c;是每个测试人员需要面对的挑战。本文将从几个方面探讨如何做好兼容性适配&#xff0c;以提高软件的稳定性和用户体验。 首先&#xf…...

天津做网站的公司排名/好用的磁力搜索引擎

数据结构复习题&#xff08;绪论&#xff09;绪论选择题填空题简答题判断题绪论 选择题 线性结构中数据元素的位置之间存在&#xff08; A &#xff09;的关系 A&#xff0e;一对多 B&#xff0e;一对一 C&#xff0e;多对多 D&#xff0e;每一个元素都有一个直接前驱和一个直…...

网站建设预算表/公司推广渠道

转自&#xff1a;http://www.yopoing.com/2011/12/secret_sql_database_performance_optimization_techniques_to_improve/ 这篇文章是以 MySQL 为背景&#xff0c;很多内容同时适用于其他关系型数据库&#xff0c;需要有一些索引知识为基础,重点讲述如何优化SQL&#xff0c;来…...

制作网站怎么做导航栏/汕头seo网站建设

游标的属性返回值类型意 义%ROWCOUNT整型获得FETCH语句返回的数据行数%FOUND布尔型最近的FETCH语句返回一行数据则为真&#xff0c;否则为假%NOTFOUND布尔型与%FOUND属性返回值相反%ISOPEN布尔型游标已经打开时值为真&#xff0c;否则为假看的懂~~~~~~~~~~~~~~~~~&#xff0…...

医院做网站需要多少钱/目前最新的营销模式有哪些

众所周知,mysql5.5版本之前都是通过./configure进行编译环境检查&#xff0c;mysql5.5之后用的是cmake(包括5.5)安装前的准备工作&#xff1a;1、安装epel源[rootlocalhost ~]#wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm[rootlocalhost ~]…...

网站首页介绍/电子商务网站建设

感觉不知道什么是VR就OUT了 其实除了VR之外&#xff0c;还有AR、MR、CR等外形类似 技术含量更高的头戴式设备&#xff0c;那么问题来了&#xff0c;这些*R们有哪些区别&#xff1f; VR&#xff08;virtualreality&#xff09;,虚拟现实 vr是由美国VPL公司创建人拉尼尔(Jaron…...

玉溪网站制作/上海百度公司地址

docker搭建npm仓库&#xff08;verdaccio&#xff09; 文章目录docker搭建npm仓库&#xff08;verdaccio&#xff09;拉去镜像设置存储目录创建目录结构配置文件内容运行拉去镜像 docker pull verdaccio/verdaccio 设置存储目录 mkdir -p ~/data/verdaccio/volume 创建目录…...