C双指针元素去重

需求

在尾部插⼊、删除元素是⽐较⾼效的,时间复杂度 是 O(1),但是如果在中间或者开头插⼊、删除元素,就会涉及数据的搬移,时间复杂度为 O(N),效率较低。 

代码
#include <stdio.h>// 相邻元素去重
int	removeDuplicates(int* nums, int n){if	(n	==	0)	return	0;int	slow	=	0,	fast	=	1;while	(fast	<	n)	{if	(nums[fast]	!=	nums[slow])	{slow++;//	维护	nums[0..slow]	⽆重复nums[slow]	=	nums[fast];}fast++;}//	⻓度为索引	+	1return	slow	+	1;}// 相同元素去重 setint toSet(int* nums, _Bool* flag, int n){if	(n	==	0)	return	0;int	slow	=	0,	fast	=	1;while	(fast	<	n)	{int  hashcode = nums[fast] % n;if	(nums[fast]	!=	nums[slow] && !flag[hashcode])	{flag[hashcode] = 1;slow++;//	维护	nums[0..slow]	⽆重复nums[slow]	=	nums[fast];}fast++;}//	⻓度为索引	+	1return	slow	+	1;}void main() {int a[10] = {1, 1, 2, 2, 1, 1, 3, 1, 2, 2};int size = removeDuplicates(a, 10);for(int i = 0; i < size; ++i)printf("%d ", a[i]);printf("\n ");_Bool flag[10] = {0};    size = toSet(a, flag, 10);for(int i = 0; i < size; ++i)printf("%d ", a[i]);}
输出
1 2 1 3 1 2 
1 2 1 3

C双指针滑动窗口算法-CSDN博客


创作不易,小小的支持一下吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01 电场强度通量 高斯定理

电场强度通量 高斯定理 5-4 电场强度通量 高斯定理一.电场线二.电场强度通量三.高斯定理四高斯定理应用举例典型电场的电场线分布图形正点电荷与负点电荷的电场线一对等量正点电荷的电场线一对等量异号点电荷的电场线一对不等量异号点电荷的电场线带电平行板电容器的电场线 5-4…

CompletableFuture介绍与实战

CompletableFuture 介绍与实战 一、前言 ​ 日常工作中&#xff0c;大多数情况下我们的接口的执行逻辑都是串行化的&#xff0c;串行化的逻辑也基本能满足我们绝大部分的场景。但是&#xff0c;在一些情况下我们的代码可能会存在一些比较耗时的操作&#xff0c;串行的逻辑就有…

金蝶云星空与金蝶云星空对接集成付款单查询打通[标准][付款单新增]-v1

金蝶云星空与金蝶云星空对接集成付款单查询打通[标准][付款单新增]-v1 对接源平台:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用…

利用Java 8 Stream API实现列表按外部顺序排序的技巧

正文&#xff1a; 在开发过程中&#xff0c;我们常会遇到需要根据某个外部列表的顺序来重新排序另一个对象集合的需求。比如&#xff0c;在处理流调模块的流调问题时&#xff0c;你可能已经有了一个按照特定规则排序的问题ID列表&#xff0c;但你的问题对象集合却是无序的。本…

OpenLayers学习笔记-点位聚合

需求 用户点击行政区划等操作后,从后台获取区域内的点位数据,在地图上聚合显示。用户手动取消聚合,点位直接渲染在地图上。 实现过程 使用后台返回的点位数据,通过new ol.source.Vector({features})创建矢量数据源。使用new ol.source.Cluster({source})创建聚合标注数据…

Gstreamer学习3.1------使用appsrc灌颜色信号数据

这个视频内容讲解的离散余弦变换&#xff0c;讲的很好&#xff0c; 离散余弦变换可视化讲解_哔哩哔哩_bilibili 其中讲到&#xff0c;把颜色变化转换为曲线的处理&#xff0c; 在前面的学习中&#xff0c;我们知道了可以向appsrc来灌数据来进行显示 Gstreamer学习3----灌数据…

C# 多态性

C# 多态性 介绍 多态性是面向对象编程(OOP)的一个核心概念,它允许不同类的对象对同一消息做出响应,并产生不同的结果。在C#中,多态性主要通过继承、接口和虚方法来实现。本文将深入探讨C#中的多态性,包括其原理、实现方式以及在实际编程中的应用。 原理 多态性允许将…

yolo格式数据集之野生动物类4种数据集已划分好|可以直接使用|yolov5|v6|v7|v8|v9|v10通用

本数据为野生动物类检测数据集&#xff0c;数据集数量如下&#xff1a; 总共有:1504张 训练集&#xff1a;1203张 验证集&#xff1a;150张 类别数量&#xff1a;4 测试集&#xff1a;151 类别名&#xff1a; [‘buffalo’, ‘elephant’, ‘rhino’, ‘zebra’] 占用空间&…

自动驾驶-端到端分割任务

上采样 bed of nails interpolation transposed convolutions 1. 上采样 (Upsampling) 上采样是一种技术&#xff0c;用于增加数据集中的样本数量或是提高信号的分辨率。在图像处理中&#xff0c;上采样通常指的是增加图像的像素数量&#xff0c;从而使图像变得更大。这可…

Redis避坑疑难杂症

问题一&#xff1a;redis服务器未指定密码&#xff0c;但客户端传了密码&#xff1a; io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no password is set 如果redis的配置文件里本身没有设置密码&#xff0c;则找到“requirepass”进行密码设置&…

python安全脚本开发简单思路

Python安全脚本开发的一个简单思路&#xff1a; 1. 明确需求和目标 - 进行全面的风险评估&#xff1a;与相关利益者&#xff08;如系统管理员、安全专家、业务部门&#xff09;进行深入交流&#xff0c;了解当前系统或网络环境所面临的潜在威胁&#xff0c;包括内部和外部的风险…

如何用STM32实现modbus-RTU?

Modbus RTU是一种广泛应用于工业自动化领域的通信协议,基于主从架构,通过串行通信进行数据传输。本文将详细介绍Modbus RTU协议的基本原理,并提供在STM32微控制器上实现Modbus RTU通信的完整代码示例。 1. Modbus RTU协议概述 Modbus RTU的定义和特点 Modbus RTU(Remote Te…

哥德巴赫猜想c++

方法一 #include<bits/stdc.h> using namespace std; //定义函数&#xff0c;判断素数 bool sushu(int n){bool rtrue;//先假设是素数&#xff0c;即真//循环因子范围&#xff0c;找到一个因子就不是素数for(int i2;i<sqrt(n);i){//判断2~n的根号是否素数if(n%i0){//…

【Linux】从零开始认识多线程 --- 线程控制

在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 从零开始认识多线程 --- 线程控制 1 知识回顾2 线程控制2.1 线程创建2.2 线程等待2.3 线程终止 3 测试运行3.1 小试牛刀 --- 创建线程3.2 探幽析微 --- 理解线程参数3.3 小有心得 --- 探索线程返回3.4 求索无厌 …

vuepress 配置文件分类管理

背景 在.vuepress的config.js配置文件中&#xff0c;我们需要设置head, plugins, nav三项主要配置。 如果都写在config.js就会显得很臃肿&#xff0c;不便于维护。 代码 config.js const headConf require("./config/headConf"); const pluginsConf require(&q…

数据结构_顺序表专题

何为数据结构&#xff1f; 咱今天也来说道说道...... 数据结构介绍 准确概念 数据结构就是计算机存储、组织数据的方式 概念分析 从上句分析&#xff0c;数据结构是一种方式。一种管理数据的方式。为了做什么&#xff1f;为的就是计算机存储数据&#xff0c;组织数据。 …

企业数字化转型成刚需 协同管理行业步入黄金发展期

随着全球经济的数字化进程加速推进&#xff0c;企业管理模式正经历着前所未有的变革。其中&#xff0c;协同管理作为一种关键的商业实践&#xff0c;正处于黄金发展期。本文将探讨企业数字化转型对协同管理行业的影响和未来发展趋势。 数字化转型的驱动因素 企业数字化转型的推…

元器件基础学习笔记——磁珠

一、磁珠的作用及构造 1.1 磁珠的作用 磁珠是一种用于抑制高频噪声的被动电子组件&#xff0c;通常由铁氧体材料制成&#xff0c;这种材料具有高电阻率和高磁导率&#xff0c;使其能够在高频下有效地将干扰信号以热能的形式消耗掉。在电路设计中&#xff0c;磁珠被广泛用于信号…

Java Lombok 使用记录

一、什么是 Lombok Lombok 是一个 Java 库&#xff0c;它通过注解的方式&#xff0c;帮助开发者消除一些样板代码&#xff0c;从而简化 Java 代码的编写。Lombok 提供了许多注解&#xff0c;用于自动生成构造函数、getter、setter、equals、hashCode 等方法&#xff0c;以及简…

单元测试有什么好处呢?

测试工作就是模拟真实环境&#xff0c;在代码正式上线前进行验证的工作&#xff0c;即使没有任何工具和方法&#xff0c;这项工作也能够通过人工操作来手动完成。那么单元测试有什么好处呢&#xff1f; 提高软件质量&#xff1a;通过测试代码的各个小部分&#xff08;通常是函数…