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

Leetcode 面试150题(三)

一、题目

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

二、思路

一旦出现原地,基本都要用到双指针。

我们可以使用两个指针来解决这个问题:

  1. 快指针(fast):用于遍历整个数组,找到所有唯一的元素。
  2. 慢指针(slow):用于标记唯一元素的位置,并在原地修改数组。

三、步骤

  1. 初始化两个指针 slow 和 fast,都指向数组的第一个元素。
  2. 遍历数组,使用 fast 指针逐个检查每个元素。
  3. 如果 nums[fast] 不等于 nums[slow],说明找到了一个新的唯一元素,将 nums[slow] 更新为 nums[fast],并将 slow 指针向前移动一位。
  4. 继续移动 fast 指针,直到遍历完整个数组。
  5. 最终,slow 指针的位置加一就是唯一元素的个数 k

① JavaScript代码:

function deleteSame(nums){if (nums.length === 0){return 0;}let slow = 0;for(let fast = 0; i<nums.length; i++){if(nums[fast] !== nums[slow]){slow ++;nums[slow] = nums[fast];}}return slow + 1;}

② python代码:

def deleteSame(nums):if not nums:return 0slow = 0for fast in range(len(nums)):if nums[fast] != nums[slow]:slow += 1nums[slow] = nums[fast]return slow+1

四、实例

假设我们有一个数组 nums = [1, 1, 2, 3, 3, 4]

  1. 初始状态:slow = 0fast = 1
  2. nums[1] == nums[0]fast 移动到下一个位置。
  3. nums[2] != nums[0]slow 移动到下一个位置,nums[1] = nums[2],此时 slow = 1
  4. nums[3] != nums[1]slow 移动到下一个位置,nums[2] = nums[3],此时 slow = 2
  5. nums[4] == nums[2]fast 移动到下一个位置。
  6. nums[5] != nums[2]slow 移动到下一个位置,nums[3] = nums[5],此时 slow = 3

最终,nums 变为 [1, 2, 3, 4, 3, 4]slow 的值是 3。

由于 slow 指针的值是唯一元素的个数减一,所以唯一元素的个数是 slow + 1 = 4

  • slow 指针的值是唯一元素的个数减一。
  • 为了得到唯一元素的个数,我们需要返回 slow + 1

相关文章:

Leetcode 面试150题(三)

一、题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &am…...

3D Web轻量化引擎HOOPS Communicator的核心优势解析:高性能可视化与灵活部署!

在当今数字化时代&#xff0c;工业领域的工程应用不断向基于Web的方向发展&#xff0c;而HOOPS Web平台作为一款专为构建此类工程应用程序打造的软件开发套件集&#xff0c;正发挥着日益重要的作用&#xff0c;成为构建强大工程应用的基石。 一、HOOPS Web平台概述 HOOPS Web…...

python爬虫:python中使用多进程、多线程和协程对比和采集实践

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 多进程爬虫1.1 python多进程样例1.2 实现多进程爬虫2. 多线程爬虫2.1 python多线程样例2.2 实现多线程爬虫3. 协程爬虫3.1 python协程样例3.2 实现协程爬虫在网络爬虫中,为了提高抓取效率,常常需要使用多进程、多线…...

从 JVM 源码(HotSpot)看 synchronized 原理

大家好&#xff0c;我是此林。 不知道大家有没有这样一种感觉&#xff0c;网上对于一些 Java 框架和类的原理实现众说纷纭&#xff0c;看了总是不明白、不透彻。常常会想&#xff1a;真的是这样吗&#xff1f; 今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全…...

深入探索Python机器学习算法:模型调优

深入探索Python机器学习算法&#xff1a;模型调优 文章目录 深入探索Python机器学习算法&#xff1a;模型调优模型调优1. 超参数搜索方法1.1 网格搜索&#xff08;Grid Search&#xff09;1.2 随机搜索&#xff08;Random Search&#xff09;1.3 贝叶斯优化&#xff08;Bayesia…...

windows 上删除 node_modules

在 Windows 11 上&#xff0c;你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤&#xff1a; 删除 node_modules 打开命令提示符&#xff08;Command Prompt&#xff09;或终端&#xff08;PowerShell&#xff09;。 导航到项目目录。你可以使用 …...

postman请求后端接受List集合对象

后端集合 post请求&#xff0c;即前端请求方式...

Kimi“撞车”DeepSeek!新一代注意力机制的极限突破!

近期&#xff0c;各方大佬在注意力机制上又“打起来了”。首先登场的是顶流DeepSeek&#xff0c;新论文梁文锋署名&#xff0c;提出了一种新的注意力机制NSA。同天&#xff0c;Kimi杨植麟署名的新注意力架构MoBA开源。紧接着&#xff0c;华为诺亚提出高效选择注意力架构ESA。 …...

如何在Android中实现服务(Service)

在Android中&#xff0c;Service 是一种用于在后台执行长时间运行操作而不提供用户界面的组件。Service 可以执行各种后台任务&#xff0c;如下载文件、播放音乐、执行定时任务等。以下是如何在Android中实现Service的基本步骤&#xff1a; 1. 创建一个Service类 首先&#x…...

计算机网络---SYN Blood(洪泛攻击)

文章目录 三次握手过程SYN Flood攻击原理防御措施协议层优化网络层拦截系统配置调整 TCP协议是 TCP/IP 协议栈中一个重要的协议&#xff0c;平时我们使用的浏览器&#xff0c;APP等大多使用 TCP 协议通讯的&#xff0c;可见 TCP 协议在网络中扮演的角色是多么的重要。 TCP 协议…...

Ollama存在安全风险的情况通报及解决方案

据清华大学网络空间测绘联合研究中心分析&#xff0c;开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛&#xff0c;多数用户使用Ollama私有化部署且未修改默认配置&#xff0c;存在数据泄露、算力盗…...

视频流畅播放相关因素

视频播放的流畅度是一个综合性问题&#xff0c;涉及从视频文件本身到硬件性能、网络环境、软件优化等多个环节。以下是影响流畅度的关键因素及优化建议&#xff1a; 一、视频文件本身 1. 分辨率与帧率 1.问题&#xff1a;高分辨率&#xff08;如4K&#xff09;或高帧率&#…...

蓝桥杯试题:二分查找

一、问题描述 给定 n 个数形成的一个序列 a&#xff0c;现定义如果一个连续子序列包含序列 a 中所有不同元素&#xff0c;则该连续子序列便为蓝桥序列&#xff0c;现在问你&#xff0c;该蓝桥序列长度最短为多少&#xff1f; 例如 1 2 2 2 3 2 2 1&#xff0c;包含 3 个不同的…...

机器人训练环境isaac gym以及legged_gym项目的配置问题

完整的安装环境教程(强烈推荐):...

Qt QOCI driver available but not loaded(可用但未加载)

参考Linux Qt 6安装Oracle QOCI SQL Driver插件&#xff08;适用WSL&#xff09;&#xff0c;根据SQL Database Drivers成功将libqsqloci.so、qsqloci.debug等文件安装到/opt/Qt6.8.2/6.8.2/gcc_64/plugins/sqldrivers后&#xff0c;运行Qt程序并尝试连接数据库时仍然报错 QSql…...

健康医疗大数据——医疗影像

一、 项目概述 1.1 项目概述 1.2 项目框架 1.3 项目环境 1.4 项目需求 二、项目调试与运行 2.1需求分析 2.2具体实现 三、项目总结 项目概述 项目概述 本项目旨在应用大数据技术于医疗影像领域&#xff0c;通过实训培养团队成员对医疗大数据处理和分析的实际…...

学生管理信息系统的需求分析与设计

伴随教育的迅猛演进以及学生规模的不断扩增&#xff0c;学生管理信息系统已然成为学校管理的关键利器。此系统能够助力学校管控学生的课程成绩、考勤记载、个人资讯等诸多数据&#xff0c;提升学校的管理效能与服务品质。 一.需求分析 1.1 学生信息管理 学生信息在学校管理体…...

基于微信小程序的停车场管理系统的设计与实现

第1章 绪论 1.1 课题背景 随着移动互联形式的不断发展&#xff0c;各行各业都在摸索移动互联对本行业的改变&#xff0c;不断的尝试开发出适合于本行业或者本公司的APP。但是这样一来用户的手机上就需要安装各种软件&#xff0c;但是APP作为一个只为某个公司服务的一个软件&a…...

【AI深度学习基础】NumPy完全指南终极篇:核心功能与工程实践(含完整代码)

NumPy系列文章 入门篇进阶篇终极篇 一、引言 在完成NumPy入门篇的基础认知与进阶篇的特性探索后&#xff0c;我们终于迎来这场终极技术深潜。本文不再停留于API使用层面&#xff0c;而是直指NumPy的架构内核与高性能工程实践的本质矛盾。作为Python科学计算领域的基石&#…...

前端小案例——520表白信封

前言&#xff1a;我们在学习完了HTML和CSS之后&#xff0c;就会想着使用这两个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…...

【最后203篇系列】010 关于矩阵的一点思考

说明 今天拿起一本矩阵的书又翻了翻&#xff0c;毕竟AI搞到最后还得是数学。 我是感觉自己高数始终有点学的迷迷糊糊的&#xff0c;就打算这一年慢慢把矩阵部分扫一遍&#xff0c;毕竟这快肯定是实打实有用的。其他高级部分就等我发财之后再说了&#xff0c;哈哈。 内容 今…...

Python快捷手册

Python快捷手册 后续会陆续更新Python对应的依赖或者工具使用方法 文章目录 Python快捷手册[toc]1-依赖1-词云小工具2-图片添加文字3-BeautifulSoup网络爬虫4-Tkinter界面绘制5-PDF转Word 2-开发1-多线程和队列 3-运维1-Requirement依赖2-波尔实验室3-Anaconda3使用教程4-CentO…...

DeepSeek崛起:如何在云端快速部署你的专属AI助手

在2025年春节的科技盛宴上&#xff0c;DeepSeek因其在AI领域的卓越表现成为焦点&#xff0c;其开源的推理模型DeepSeek-R1擅长处理多种复杂任务&#xff0c;支持多语言处理&#xff0c;并通过搜索引擎获取实时信息。DeepSeek因其先进的自然语言处理技术、广泛的知识库和高性价比…...

【金融量化】Ptrade中的基础交易与高级量化交易策略的下单接口

1 基础交易与订单管理接口 1. order 功能&#xff1a;用于按指定数量买卖股票或其他金融产品。 参数&#xff1a; security&#xff1a;股票代码&#xff08;字符串类型&#xff09;。amount&#xff1a;交易数量&#xff08;整数类型&#xff09;&#xff0c;正数表示买入&…...

GCC RISCV 后端 -- GCC 后端框架的一些理解

GCC 已经提供了一整套的编译框架&#xff0c;从前端&#xff08;Frontend / GENERIC-Tree&#xff09;对编程语言的语法语义处理&#xff0c;到中端&#xff08;Middle-End / GIMPLE-Tree&#xff09;的目标机器无关&#xff08;Target Indepndent&#xff09;的优化处理&#…...

【前端】HTML 备忘清单(超级详细!)

文章目录 入门hello.html注释 Comment段落 ParagraphHTML 链接Image 标签文本格式标签标题Section Divisions内部框架HTML 中的 JavaScriptHTML 中的 CSS HTML5 标签页面标题导航HTML5 TagsHTML5 VideoHTML5 AudioHTML5 RubyHTML5 kdiHTML5 progressHTML5 mark HTML 表格Table …...

鸿蒙开发新视角:用ArkTS解锁责任链模式

责任链模式&#xff1a;概念与原理 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它将多个处理者对象连接成一条链&#xff0c;并将请求沿着链传递&#xff0c;直到有一个处理者能够处理该请求。这种模式的核心思想是将…...

Linux的用户与权限--第二天

认知root用户&#xff08;超级管理员&#xff09; root用户用于最大的系统操作权限 普通用户的权限&#xff0c;一般在HOME目录内部不受限制 su与exit命令 su命令&#xff1a; su [-] 用户名 -符号是可选的&#xff0c;表示切换用户后加载环境变量 参数为用户名&#xff0c…...

【Unity】搭建HTTP服务器并解决IP无法访问问题解决

一、核心目标与背景 在Unity中搭建本地HTTP服务器&#xff0c;可以用于实现Web与游戏交互、本地数据接口测试、跨设备通信等场景。但在实际部署中&#xff0c;开发者常遇到以下问题&#xff1a; ​本机IP无法访问&#xff1a;服务绑定localhost时&#xff0c;局域网设备无法连…...

【C语言】结构体自动对齐问题 解析与解决方案

【C语言】结构体自动对齐问题 解析与解决方案 文章目录 【C语言】结构体自动对齐问题 解析与解决方案一、引言&#xff1a;问题背景二、结构体对齐机制详解2.1 对齐规则2.2 示例分析 三、实际案例与错误复现3.1 问题代码修正 四、 解决方案对比与实现4.1 禁用自动对齐&#xff…...