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

【面试题解答】一个有序数组 nums ,原地删除重复出现的元素

面试题解答

仅供学习


文章目录

  • 面试题解答
  • 题目
  • 一、python代码
    • 1.1 代码
    • 1.2 示例用法
      • 1.2.1 示例1
      • 1.2.2 示例2
  • 二、讲解
    • 2.1 初始化
    • 2.2 遍历
    • 2.3 返回


题目

在这里插入图片描述
要解决这个问题,可以使用双指针方法进行原地修改,以确保每个元素最多出现两次。


一、python代码

1.1 代码

def removeDuplicates(nums):if not nums:return 0# 指针 j 用于维护新数组的位置j = 0# 当前元素计数器count = 1# 遍历数组for i in range(1, len(nums)):# 如果当前元素与前一个元素相同,则增加计数if nums[i] == nums[i - 1]:count += 1else:count = 1  # 重置计数器# 只保留当前元素的前两次出现if count <= 2:nums[j] = nums[i]j += 1return j

1.2 示例用法

1.2.1 示例1

nums1 = [1, 1, 1, 2, 2, 3]
length1 = removeDuplicates(nums1)
print(length1) # 输出: 5
print(nums1[:length1]) # 输出: [1, 1, 2, 2, 3]

1.2.2 示例2

nums2 = [0, 0, 1, 1, 1, 1, 2, 3, 3]
length2 = removeDuplicates(nums2)
print(length2) # 输出: 7
print(nums2[:length2]) # 输出: [0, 0, 1, 1, 2, 3, 3]

二、讲解

2.1 初始化

  • j 指针用于跟踪新数组的位置。
  • count 计数器用于跟踪当前元素出现的次数。

2.2 遍历

  • 从第二个元素开始(i = 1),检查当前元素是否与前一个元素相同。
  • 如果相同,则 count 增加;否则,重置 count 为 1。
  • 如果 count 不超过 2,将当前元素放到 j 指向的位置,并移动 j 指针。

2.3 返回

  • 函数返回 j,即新数组的长度。

相关文章:

【面试题解答】一个有序数组 nums ,原地删除重复出现的元素

面试题解答 仅供学习 文章目录 面试题解答题目一、python代码1.1 代码1.2 示例用法1.2.1 示例11.2.2 示例2 二、讲解2.1 初始化2.2 遍历2.3 返回 题目 要解决这个问题&#xff0c;可以使用双指针方法进行原地修改&#xff0c;以确保每个元素最多出现两次。 一、python代码 1.1…...

【数据结构算法经典题目刨析(c语言)】随机链表的复制(图文详解)

&#x1f493; 博客主页&#xff1a;C-SDN花园GGbond ⏩ 文章专栏&#xff1a;数据结构经典题目刨析(c语言) 目录 一、题目描述 二、思路分析 三、代码实现 一、题目描述 二、思路分析 要完成一个带随机指针的链表的复制&#xff0c;有一个巧妙的办法:分三步走 1.完成节…...

cqyjldfx

CVE-2023-27179 靶标介绍&#xff1a; GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞&#xff0c;漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。攻击者可以通过向 filename 参数传递恶意输入来下载服务器上的任意文件。 提示有本地文件泄露&a…...

大数据——HBase原理

摘要 HBase 是一个开源的、非关系型的分布式数据库系统&#xff0c;主要用于存储海量的结构化和半结构化数据。它是基于谷歌的 Bigtable 论文实现的&#xff0c;运行在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;之上&#xff0c;并且可以与 Hadoop 生态系统的其他组…...

《电视技术》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《电视技术》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《电视技术》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国电子科技集团公司 主办单位&#xff…...

网络编程 --------- 2、socket网络编程接口

1、什么是socket 套接字 socke套接字是一个编程的接口 (网络编程的接口)、是一种特殊的文件描述符 (read/write)&#xff0c;不局限于TCP/IP 。socket是独立于具体协议的网络编程接口这个接口是位于 应用层和传输层之间 。 类型&#xff1a; (1)流式套接字 SOCK_ST…...

C# Deconstruct详解

总目录 前言 该文来源于探索弃元的使用&#xff0c;由弃元了解到元组&#xff0c;由元组又了解到解构方法Deconstruct。 另外本文中 解构和析构一个意思&#xff0c;不要在意&#xff01; 一、Deconstruct是什么&#xff1f; 1. 关于元组 如果我们想了解Deconstruct 的使用&…...

Java 面试常见问题之——为什么重写equals时必须重写hashCode方法

Java 面试常见问题之——为什么重写equals时必须重写hashCode方法 当重写 equals 方法时&#xff0c;通常也应该重写 hashCode 方法&#xff0c;原因主要有以下几点&#xff1a; 一致性原则&#xff1a;根据 Java 的约定&#xff0c;如果两个对象通过 equals 方法比较返回 tr…...

后端给的树形结构 递归 改造成阶联选择器所需要的lable、value结构

赋值&#xff1a;this.newTreeData this.renameFields(this.treeData) 递归方法&#xff1a;renameFields (tree) {return tree.map(node > {// 创建一个新对象来存放修改后的字段名const newNode {value: node.id,label: node.title,// 如果有子节点&#xff0c;则递归处理…...

文献阅读:基于拓扑结构模型构建ICI收益诊断模型

介绍 Custom scoring based on ecological topology of gut microbiota associated with cancer immunotherapy outcome是来自法国Gustave Roussy Cancer Campus的Laurence Zitvogel实验室最近发表在cell的关于使用肠道微生物拓扑结构预测免疫治疗疗效的文章。 该研究提供基于…...

Python文献调研(四)QtDesigner的布局

一、新建项目&#xff1a; 1.打开pycharm&#xff0c;新建一个Python项目 &#xff08;1&#xff09;右键项目列表区&#xff0c;找到我们之前配置好的外部工具&#xff0c;点击Pyside6 QtDesigner 打开Qt Designer后会是这个界面&#xff1a; &#xff08;2&#xff09;此时…...

CentOS Linux release 7.9.2009 中sudo命令未找到

先在 Windows 环境中下载 sudo 的安装包 下载安装包&#xff1a;https://www.sudo.ws/releases/stable/ 然后把安装包拷贝的 Centos 中&#xff0c;cd 进入安装包所在的目录执行下面的命令&#xff1a; 格式&#xff1a;rpm -Uhv xxxxx.rpm rpm -Uhv sudo-logsrvd-1.9.15-6.…...

生产计划问题的不同最优化工具软件求解

一、优化求解软件简介 众所周知&#xff0c;常用的优化工具软件有Lingo、Mathcad和MATLAB。 1. LINGO是Linear Interactive and General Optimizer的缩写&#xff0c;即“交互式的线性和通用优化求解器”&#xff0c;由美国LINDO系统公司&#xff08;Lindo System Inc.&…...

Java关键字及保留字总结

文章目录 Java关键字及保留字总结&#xff08;按首字母字母顺序所排列&#xff09;1.abstract2.boolean3.break4.byte5.case6.catch7.char8.class9.continue10.default11.do12.double13.else14.enum15.extends16.final17.finally18.float19.for20.if21.implements22.import23.i…...

【PGCCC】PostgreSQL 14 小版本分析,有那个版本不建议使用#PG中级

以下是对 PostgreSQL 14 各个小版本的详细分析&#xff0c;包括每个版本的主要变化、修复的 bug 和潜在的问题&#xff1a; PostgreSQL 14.0 发布日期&#xff1a;2021 年 9 月 30 日 主要变化&#xff1a; 增加了并行查询的改进&#xff0c;提升了性能。增强了 JSON 数据类…...

B树在数据库中的应用:理论与实践

B树在数据库中的应用&#xff1a;理论与实践 B树&#xff08;B-tree&#xff09;是一种自平衡的树数据结构&#xff0c;广泛应用于数据库系统中&#xff0c;特别是用于实现索引和文件系统中的关键字查找。B树的设计目标是保持数据有序并允许高效的查找、插入和删除操作。本文将…...

网络编程 -------- 3、TCP_UDP_UNIX

1、基于TCP的套接字编程流程 Server.c socket bind &#xff08;服务器的ip端口&#xff09; listen accept recv / send close Client.c socket connect &#xff08;服务器的ip端口&#xff09; …...

口袋奇兵:游戏辅助教程!陆军搭配阵容推荐,平民必备!

《口袋奇兵》是一款策略类手游&#xff0c;玩家需要在游戏中组建和指挥自己的军队&#xff0c;进行各种战斗和任务。为了在游戏中取得更好的成绩&#xff0c;合理搭配英雄和使用辅助工具是非常重要的。本攻略将为大家介绍一种强力的陆军搭配阵容&#xff0c;以及如何利用VMOS云…...

Spring Boot 集成参数效验 Validator

为什么需要参数效验? 在业务开发中,为了防止非法参数对业务造成影响,所以需要对用户输入的正确性、数据完整性、安全性、业务规则的执行做效验,靠代码对接口参数做if判断的话就太繁琐了,代码冗余且可读性差(主要是不够优雅)。 Validator效验框架遵循了JSR-303验证规范…...

63、ELK安装和部署

一、ELK日志系统 1.1、ELK平台的定义 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana 三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求 E:elasticsearch ES分布式索引型非关系数据库&#xff0c;存…...

告别卡顿闪烁!在Cesium 1.134中集成SOG格式,让400万高斯秒级加载

突破性能瓶颈&#xff1a;Cesium 1.134集成SOG格式实现400万高斯秒级渲染 在三维地理空间可视化领域&#xff0c;Cesium一直是开发者构建高精度场景的首选引擎。但当项目涉及数百万级高斯泼溅数据时&#xff0c;传统加载方式往往导致令人崩溃的卡顿和视角移动时的闪烁问题。最近…...

AudioLDM-S效果惊艳:科幻飞船、城市夜晚,AI生成的音效有多真实?

AudioLDM-S效果惊艳&#xff1a;科幻飞船、城市夜晚&#xff0c;AI生成的音效有多真实&#xff1f; 想象一下&#xff0c;你正在制作一个科幻短片&#xff0c;需要一个飞船引擎启动时低沉、充满能量的嗡鸣声。或者&#xff0c;你想为一段城市夜景视频配上背景音&#xff0c;需…...

告别macOS原生切换烦恼:alt-tab-macos让窗口管理效率提升300%的终极指南

告别macOS原生切换烦恼&#xff1a;alt-tab-macos让窗口管理效率提升300%的终极指南 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 作为macOS用户&#xff0c;你是否也曾对系统自带的窗口切换功…...

ESP32嵌入式系统设计与实现指南

1. 项目概述1.1 系统架构本项目基于ESP32主控芯片设计&#xff0c;采用模块化架构实现多功能嵌入式系统。系统包含以下核心模块&#xff1a;主控单元&#xff1a;ESP32-WROOM-32D模组电源管理&#xff1a;TPS63020升降压转换器传感器接口&#xff1a;I2C/SPI多协议兼容设计人机…...

C++新手必看:如何用最简单的方法找出一个数的所有因数(附GESP真题解析)

C实战指南&#xff1a;高效求解因数的5种方法及GESP真题精讲 在编程学习的道路上&#xff0c;理解基础算法就像盖房子打地基一样重要。因数计算这个看似简单的题目&#xff0c;其实蕴含着循环控制、条件判断和算法优化等核心编程思想。很多初学者在第一次遇到这类问题时&#x…...

揭秘League Akari:如何通过LCU API革新英雄联盟游戏体验?

揭秘League Akari&#xff1a;如何通过LCU API革新英雄联盟游戏体验&#xff1f; 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...

用ChatTTS打造你的专属AI语音助手:从音色定制到批量合成音频的完整工作流

用ChatTTS打造你的专属AI语音助手&#xff1a;从音色定制到批量合成音频的完整工作流 在内容创作领域&#xff0c;音频正成为越来越重要的媒介形式。无论是知识付费课程的讲解、播客节目的制作&#xff0c;还是智能设备的语音交互&#xff0c;一个稳定、个性化的语音合成系统都…...

告别特征工程:用Python+Matplotlib把EEG脑电信号直接变成CNN能吃的时频图

从原始EEG到CNN输入&#xff1a;Python自动化生成时频图全流程解析 深夜的实验室里&#xff0c;显示器上跳动的脑电波形正被转化为一张张彩色图像——这不是科幻场景&#xff0c;而是现代脑机接口研究的日常。传统EEG分析中繁琐的特征工程正在被一种更直观的方法取代&#xff1…...

DanKoe 视频笔记:数字经济学:未来职业之路:从工作到游戏 [特殊字符]

在本节课中&#xff0c;我们将探讨未来职业发展的核心范式转变。我们将学习如何将个人好奇心转化为可持续的在线事业&#xff0c;并理解构建个人品牌与数字资产的底层逻辑。 在过去的一个月里&#xff0c;我意识到我生活中以及许多人生活中的一个共同主题&#xff1a;痴迷。 童…...

如何高效优化多语言模型:专业部署的完整策略

如何高效优化多语言模型&#xff1a;专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...