leetcode27.删除有序数组中的重复项

news/2025/2/3 17:46:14 标签: 开发语言, c++

目录

  • 问题描述
  • 判题标准
  • 示例
    • 提示
  • 具体思路
    • 思路一
    • 思路二
  • 代码实现

问题描述

给你一个非严格递增排列的数组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.length <= 3 * 1 0 4 10^4 104
   − 1 0 4 -10^4 104 <= nums[i] <= 1 0 4 10^4 104
  nums 已按非严格递增排列

具体思路

思路一

  重新额外开辟一个数组存放修改过的元素。使用src1,src2和dst指针,如果src1与src2所指向的内容相等时,那么就src++,如果当src1与src2不相等时,就将a数组中src1中的内容赋值到tmp数组的dst中,让后dst++,然后将src2赋值给src1,最后src2++。
在这里插入图片描述

思路二

  不需要额外开数组的方法。在一个数组中使用src和dst两个指针,当src和dst不相等时,那么就++dst,然后将数组a中的src的内容赋值到a数组中的dst中,最后在++src,如果当src和dst相等的时候,那么就直接src++。
在这里插入图片描述

代码实现

//思路2
int removeDuplicates(int* nums, int numsSize) {
    int src = 1, dst = 0;
    while(src < numsSize)
    {
        if(nums[src] != nums[dst])
        {
            nums[++dst] = nums[src++];
        }
        else
        {
            src++;
        }
    }
    return dst+1;
}

http://www.niftyadmin.cn/n/5840970.html

相关文章

数据库 - Sqlserver - SQLEXPRESS、由Windows认证改为SQL Server Express认证进行连接 (sa登录)

本文讲SqlServer Express版本在登录的时候&#xff0c; 如何由Windows认证&#xff0c;修改为Sql Server Express认证。 目录 1&#xff0c;SqlServer Express的Windows认证 2&#xff0c;修改为混合认证 3&#xff0c;启用sa 用户 4&#xff0c;用sa 用户登录 下面是详细…

探索 Copilot:开启智能助手新时代

探索 Copilot&#xff1a;开启智能助手新时代 在当今数字化飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的工作和生活方式。而 Copilot 作为一款强大的 AI 助手&#xff0c;凭借其多样的功能和高效的应用&#xff0c;正在成为众…

计算机网络 性能指标相关

目录 吞吐量 时延 时延带宽积 往返时延RTT 利用率 吞吐量 时延 时延带宽积 往返时延RTT 利用率

攻防世界_php_rce(ThinkPHP框架)

打开靶场 点链接&#xff0c;发现是广告&#xff0c;没什么特别的&#xff0c;再看题目php.rce&#xff0c;查一下RCE是什么 RCE&#xff08;Remote Command Execution&#xff09;远程命令执行&#xff0c;是一种严重的网络安全漏洞。 RCE指攻击者能通过网络远程控制目标系统&…

在Ubuntu上使用Docker部署DeepSeek

在Ubuntu上使用Docker部署DeepSeek&#xff0c;并确保其可以访问公网网址进行对话&#xff0c;可以按照以下步骤进行&#xff1a; 一、安装Docker 更新Ubuntu的软件包索引&#xff1a; sudo apt-get update安装必要的软件包&#xff0c;这些软件包允许apt通过HTTPS使用存储库…

【漫话机器学习系列】075.隐含层(Hidden Layer)

隐含层&#xff08;Hidden Layer&#xff09; 在人工神经网络&#xff08;ANN&#xff09;中&#xff0c;隐含层是指输入层和输出层之间的层。它们由多个神经元&#xff08;或节点&#xff09;组成&#xff0c;这些神经元负责从输入层接收信号&#xff0c;进行处理后将信号传递…

通过 Docker 部署 Mastodon 服务器 的教程

如何使用Edu邮箱申请Azure订阅并开通免费的VPS 想要免费获得 Azure 的VPS吗&#xff1f;拥有一个Edu邮箱就能让你轻松实现&#xff01;Edu邮箱不仅可以帮助你申请 Azure 的学生订阅&#xff0c;还能免费使用 Adobe 和 Notion 等软件&#xff0c;让你的学习和工作更加便捷。如果…

大模型-CLIP 详细介绍

CLIP简介 CLIP&#xff08;Contrastive Language–Image Pre-training&#xff09;是由OpenAI在2021年提出的一种多模态机器学习模型。它旨在通过大量的文本-图像对进行训练&#xff0c;从而学会理解图像内容&#xff0c;并能将这些内容与相应的自然语言描述相匹配。CLIP的核心…