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

闯关leetcode——26. Remove Duplicates from Sorted Array

大纲

  • 题目
    • 地址
    • 内容
  • 解题
    • 代码地址

题目

地址

https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/

内容

Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then return the number of unique elements in nums.

Consider the number of unique elements of nums to be k, to get accepted, you need to do the following things:

  • Change the array nums such that the first k elements of nums contain the unique elements in the order they were present in nums initially. The remaining elements of nums are not important as well as the size of nums.
  • Return k.

Custom Judge:

The judge will test your solution with the following code:

int[] nums = […]; // Input array
int[] expectedNums = […]; // The expected answer with correct length

int k = removeDuplicates(nums); // Calls your implementation

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}

If all assertions pass, then your solution will be accepted.

Example 1:

Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Example 2:

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,,,,,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Constraints:

  • 1 <= nums.length <= 3 * 104
  • -100 <= nums[i] <= 100
  • nums is sorted in non-decreasing order.

解题

这题要求在一个包含重复数字的升序数组中,找到所有出现的数字(剔除重复的部分),并将它们放到数组的头部。比如 [0,0,1,1,1,2,2,3,3,4]中有大量重复数字,但是只出现了0、1、2、3、4这五个数。我们要将这五个数字放到数组头部,剩下的位放什么数字无所谓。
题中提到数组是有序数组,这意味着我们在找重复数字时只要用数字和前面的数字做对比即可。其次对于结果数组,不需要考虑未被改变的空间的值。那么我们就只用找到出现的数字,并递增索引号来存储它们即可。

#include <vector>
using namespace std;class Solution {
public:int removeDuplicates(vector<int>& nums) {if (nums.empty()) return 0;int uniqueIndex = 1;for (int i = 1; i < nums.size(); i++) {if (nums[i] != nums[uniqueIndex - 1]) {nums[uniqueIndex++] = nums[i];}}return uniqueIndex;}
};

在这里插入图片描述

代码地址

https://github.com/f304646673/leetcode/tree/main/26-Remove-Duplicates-from-Sorted-Array

http://www.lryc.cn/news/438809.html

相关文章:

  • 基于A2C与超启发式的航天器星载自主任务规划算法-笔记
  • [机器学习]决策树
  • CentOS7更换阿里云yum更新源
  • 算法参数对拥塞控制的影响
  • Go websocket
  • C# 委托与事件 观察者模式
  • K8S - 用service account 登陆kubectl
  • Redis 持久化机制详解
  • 小阿轩yx-案例:Zabbix监控kubernetes云原生环境
  • 量化交易的个人见解
  • Java集合(一)
  • 车载软件架构 --- SOA设计与应用(下)
  • 网络原理 IP协议与以太网协议
  • k8s的安装
  • Qt中样式表常用的属性名称定义
  • React源码学习(一):如何学习React源码
  • 云计算服务的底层,虚拟化技术的实现原理
  • 大数据Flink(一百一十六):Flink SQL的时间属性
  • Ansible自动化部署kubernetes集群
  • 网络通信流程
  • 数据结构一:绪论
  • 使用OpenFeign在不同微服务之间传递用户信息时失败
  • js中【Worker】相关知识点详细解读
  • 使用Apify加载Twitter消息以进行微调的完整指南
  • 【C++算法】滑动窗口
  • (c++)猜数字(含根据当前时间生成伪随机数代码)
  • 优化批处理流程:自定义BatchProcessorUtils的设计与应用
  • Framebuffer应用编程
  • MongoDB根据字段内容长度查询语句
  • Android中的单例模式