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

LeetCode[中等] 80. 删除有序数组中的重复项 II

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

 

public class Solution {public int RemoveDuplicates(int[] nums) {int slow = 2, fast = 2;int length = nums.Length;if(length <= 2)return length;while(fast < length){if(nums[fast] != nums[slow - 2]){nums[slow] = nums[fast];slow++;}fast++;}return slow;}
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组 nums 的长度。双指针各遍历数组一次。

  • 空间复杂度:O(1)。

More

这道题要求删除数组中重复出现的元素,使每个元素最多出现两次。上述做法可以推广到更普遍的情形,即对于任意 x≥1,删除数组中重复出现的元素,使每个元素最多出现 x 次。

对于普遍的情形,做法是首先判断数组长度是否大于 x,如果数组长度小于等于 x 则返回数组长度,如果数组长度大于 x 则使用双指针。

初始时将快指针 fast 和 slow 都指向下标 x,判断当前元素是否为重复元素时比较 nums[fast] 和 nums[slow−x] 是否相等,其余逻辑不变。时间复杂度和空间复杂度与上述做法相同。

下面的代码为这道题在普遍情形下的实现,取 x=2 的特例。

class Solution {public int removeDuplicates(int[] nums) {return removeDuplicatesAtMostX(nums, 2);}public int removeDuplicatesAtMostX(int[] nums, int x) {int length = nums.length;if (length <= x) {return length;}int fast = x, slow = x;while (fast < length) {if (nums[fast] != nums[slow - x]) {nums[slow] = nums[fast];slow++;}fast++;}return slow;}
}

相关文章:

LeetCode[中等] 80. 删除有序数组中的重复项 II

给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 public cl…...

机器学习5

1.1 决策树的定义 决策树是用于分类和回归的机器学习算法。它通过一系列的“是或否”的决策来分类数据。每个决策是基于数据的某个属性进行的&#xff0c;如“色泽是青绿吗&#xff1f;”。决策树的核心是通过树状结构&#xff0c;将一个复杂的问题逐步拆解为多个简单的二元问…...

【Python技术】利用akshare定时获取股票实时价,低于5日线钉钉通知报警

今天看了下大盘&#xff0c;临时有个想法&#xff0c;我想知道某个股票回踩5日线的价格&#xff0c;如果实时价格低于5日线通过钉钉报警通知我。 说干就干&#xff0c;临时撸了下简单的代码&#xff0c;仅做演示。 1、计算5日线思路 很多券商软件的MA5价格是近5个交易日收盘…...

LINUX1.2

1.一切都是一个文件 &#xff08;硬盘&#xff09; 2.系统小型 轻量型&#xff0c;300个包 3.避免令人困惑的用户界面 ------------------> 就是没有复杂的图形界面 4.不在乎后缀名&#xff0c;有没有都无所谓&#xff0c;不是通过后缀名来定义文件的类型&#xff08;win…...

Proximal Distance Algorithm (近段距离算法)

文章目录 第一篇\section*{近端距离算法&#xff08;Proximal Distance Algorithm&#xff09;详解}\subsection*{1. MM原理&#xff08;Majorization-Minimization Principle&#xff09;}\subsection*{2. 近端距离算法&#xff08;Proximal Distance Algorithm&#xff09;}\…...

如何判断一个数是几位数与这个数是否为回文数并打印出其逆序数

1 问题 判断一个数是几位数与这个数是否为回文数并打印出其逆序数。 2 方法 先输入一个少于五位数的数用int的方法打出这个数的个十百千万的数字再用条件语句else-if来判断这个数是几位数&#xff0c;并打印其逆序数最后判断这个数是否为回文数&#xff0c;打印其数 通过实验、…...

Solon 之 STOMP

一、STOMP 简介 如果直接使用 WebSocket 会非常累&#xff0c;就像用 Socket 编写 Web 应用。没有高层级的交互协议&#xff0c;就需要我们定义应用间所发消息的语义&#xff0c;还需要确保连接的两端都能遵循这些语义。 如 HTTP 在 TCP 套接字之上添加了请求-响应模型层一样…...

在掌控板上搭建http服务器

在掌控板上搭建http服务器 打开Arduino IDE&#xff0c;并且已经添加了ESP32的支持库。以下是创建一个基本HTTP服务器的步骤&#xff1a; 包含必要的库&#xff1a; #include <WiFi.h> #include <WebServer.h>配置WiFi&#xff1a; 替换ssid和password为你的WiFi网…...

HCIA复习实验

实验要求 实验拓扑以及实验分析 第一步先划分网段 先对内网划分 192.168.1.0/24划分 192.168.1.0/26---骨干主线路 192.168.1.64/26---骨干备线路 ---192.168.1.128/25--vlan2 3汇总---便于减少路由表条目---在大型网络方便 192.168.1.128/26---vlan2 192.168.1.192/26---vla…...

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

1. LUSH流程简介 基因组测序通常用于分子诊断、分期和预后&#xff0c;而大量测序数据在分析时间方面提出了挑战。 对于从FASTQ到VCF的整个流程&#xff0c;LUSH流程在非GVCF和GVCF模式下都大大降低了运行时间&#xff0c;30 X WGS数据耗时不到2 h&#xff0c;从BAM到VCF约需…...

c#编写的各类应用程序、类库的引用(黑白盒)

001 课程简介&#xff0c;C# 语言简介&#xff0c;开发环境准备 (yuque.com)https://www.yuque.com/yuejiangliu/dotnet/timothy-csharp-001 一个Solution里包含多个Project 一、见识 C# 编写的各类应用程序 二、类库的引用&#xff08;黑/白盒引用&#xff09; 1、黑盒引用&a…...

计算机网络考研笔记

...

用感性的方式浅要了解什么是AI 与 大模型

什么是人工智能&#xff08;AI&#xff09;&#xff1f; 人工智能&#xff08;Artificial Intelligence&#xff0c;简称 AI&#xff09;是指由人制造出来的具有一定智能的系统&#xff0c;能够理解和学习人类的行为&#xff0c;并在某些任务上模仿人类的智能行为。这些任务包…...

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…...

专题十四_哈希表_算法专题详细解答

目录 哈希表简介 1. 两数之和&#xff08;easy&#xff09; 解析&#xff1a; 解法一&#xff1a;暴力&#xff1a; 解法二&#xff1a;哈希O(N) 总结&#xff1a; 2. 判断是否互为字符重排&#xff08;easy&#xff09; 解析&#xff1a; 哈希&#xff1a; 总结&…...

C++源码生成·序章

文章目录 C源码生成序章1 概述1.1 前言1.2 Python 易用性简介 2 使用 python 生成 c 源码2.1 运行脚本2.2 结果 3 项目启动3.1 项目概述3.2 环境准备3.3 克隆仓库3.4 查看标签&#xff08;Tags&#xff09;3.4 根据标签拉取代码3.5 后续步骤 C源码生成序章 1 概述 1.1 前言 …...

Android中的MVP模式

MVP&#xff08;Model-View-Presenter&#xff09;架构在 Android 开发中是一种流行的架构模式&#xff0c;它将业务逻辑和 UI 代码分离&#xff0c;通过 Presenter 来处理用户的操作和界面更新。MVP 提高了代码的可维护性和测试性&#xff0c;特别是 Presenter 中的逻辑可以单…...

kebuadm部署k8s集群

官方文档&#xff1a; Installing kubeadm | Kubernetes 切记要关闭防⽕墙、selinux、禁用交换空间&#xff0c; cpu核⼼数⾄少为2 内存4G kubeadm部署k8s⾼可用集群的官方文档&#xff1a; Creating Highly Available Clusters with kubeadm | Kubernetes 你需要在每台…...

Unity3D学习FPS游戏(2)简单场景、玩家移动控制

前言&#xff1a;上一篇的时候&#xff0c;我们已经导入了官方fps的素材&#xff0c;并且对三维模型有了一定了解。接下来我们要构建一个简单的场景让玩家能够有地方移动&#xff0c;然后写一个简单的玩家移动控制。 简单场景和玩家移动 简单场景玩家移动控制玩家模型视野-摄像…...

网上的 AQS 文章让我很失望

一、AQS 很多人都没有讲明白 &#x1f914; 翻看了网上的 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;文章&#xff0c;质量参差不齐&#xff0c;大多数都是在关键处跳过、含糊其词&#xff0c;美其名曰 “传播知识” 。 大多数都是进行大段的源码粘贴和注释&…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...