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

双指针——删除有序数组中的重复项

题目描述

给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。

输入格式

一共两行。
第一行一个整数 n (0≤n≤10^7)。
第二行包括 n 个整数 ai (−10^4≤ai≤10^4)。

输出格式

输出包括两行。
第一行为一个整数 m,表示删除重复的数字后数组长度。
第二行为 m 个整数。

输入样例1

3
1 1 2

输出样例1

2
1 2

输入样例2

10
0 0 1 1 1 2 2 3 3 4

输出样例2

5
0 1 2 3 4

输入样例3

0

输出样例3

0

注释版代码

#include<iostream>
using namespace std;
const int N=1e7+10;
int n;
int a[N];
int main() {
	scanf("%d",&n);
	for(int i=0; i<n; i++) {
		scanf("%d",&a[i]);
	}
	int k=0;
	for(int i=0;i<n;i++)
	{
		if(i==0||a[i]!=a[i-1])
		{
			a[k++]=a[i];
		}
	}
	printf("%d\n",k);
	for(int i=0;i<k;i++)
	{
		if(i==0)
		printf("%d",a[i]);
		else printf(" %d",a[i]);
	}
	return 0;
}

http://www.kler.cn/news/335874.html

相关文章:

  • 通信工程学习:什么是ICP网络内容服务商
  • [C++]使用onnxruntime部署yolov11-cls图像分类onnx模型
  • CSS基础-盒子模型(三)
  • 远程调用的问题以及eureka原理
  • JAVA学习-练习试用Java实现“回文数”
  • 高性能、编译器编写语言、编程语言的高低贵贱
  • c#里氏替换
  • Leetcode: 0041-0050题速览
  • 数据结构:基本概念及术语
  • 【代码随想录Day30】贪心算法Part04
  • 计算机毕业设计 校内跑腿业务系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 小论插头DP
  • Golang | Leetcode Golang题解之第454题四数相加II
  • Stable Diffusion绘画 | AI 图片智能扩充
  • 01 从0开始搭建django环境
  • 用HTML CSS JS打造企业级官网-源码直接可用
  • HTML5 新元素
  • ubuntu切换源方式记录(清华源、中科大源、阿里源)
  • MVCC(多版本并发控制)
  • JVM类加载过程