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

LeetCode26.删除有序数组中的重复项(双指针法)

LeetCode26.删除有序数组中的重复项

  • 1.问题描述
  • 2.解题思路
  • 3.代码

1.问题描述

给你一个 非严格递增排列 的数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

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

示例 1:

输入:nums = [1,1,2]
输出:2, nums = [1,2,_]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums 已按 非严格递增 排列

2.解题思路

  1. 双指针法(快慢指针法):(和LeetCode27:移除元素方法相同)
  • 快指针:进行数组遍历
  • 慢指针:即将被赋值的位置

将目前位置与前一个位置上的数进行对比,如果一样,就移动指针去下一个位置访问下一个元素。如果不一样,赋值给慢指针。慢指针只要目前为止被填充了新值,就再向后移动一位。

3.代码

python:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:# 指针 i 进行数组遍历n = len(nums)# 指针 j 指向即将被赋值的位置j = 0  #慢指针# 开始对数组进行遍历for  i in range(n): # 进行筛选if  i == 0 or  nums[i] != nums[i - 1] : # 赋值nums[j] = nums[i]# j 移动j += 1# 获取结果return j 

C++:

class Solution {
public:int removeDuplicates(vector<int>& nums) {// 指针 i 进行数组遍历int n = nums.size();// 指针 j 指向即将被赋值的位置int j = 0;// 开始对数组进行遍历for (int i = 0 ; i < n ; i++) {// 进行筛选if ( i == 0 ||  nums[i] != nums[i - 1]) {// 赋值nums[j] = nums[i];// j 移动j++;}}// 获取结果return j ;}
};
http://www.lryc.cn/news/235440.html

相关文章:

  • 原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列8
  • 黑马点评回顾 redis实现共享session
  • Redis篇---第八篇
  • Unity使用Visual Studio Code 调试
  • 【Linux】进程替换|exec系列函数
  • Java编程技巧:将图片导出成pdf文件
  • 二项分布和泊松分布
  • 【飞控调试】DJIF450机架+Pixhawk6c mini+v1.13.3固件+好盈Platinium 40A电调无人机调试
  • Android studio配置Flutter开发环境报错问题解决
  • 2023.11.18 -自用hadoop高可用环境搭建命令
  • 【Linux】常用系统工作命令
  • 深入理解网络协议:通信世界的基石
  • PL/SQL编程
  • Prompt提示词——什么是CRISPE框架?QCIPSPE框架?
  • Nginx的核心配置文件
  • Java,集合框架,关于Collection接口(子接口List和Set)
  • 已安装的nginx追加ssl模块
  • 大语言模型|人工智能领域中备受关注的技术
  • Docker之DockerFile解析
  • NSSCTF第13页(2)
  • 基于吉萨金字塔建造算法优化概率神经网络PNN的分类预测 - 附代码
  • Git详解及 github使用
  • iOS源码-工程目录讲解
  • ESP32 Arduino实战协议篇-搭建独立的 Web 服务器
  • 多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测
  • 【开源】基于Vue.js的在线课程教学系统的设计和实现
  • CentOS 安装etcd集群 —— 筑梦之路
  • mysql 实现去重
  • 类模板成员函数类外实现
  • 多svn仓库一键更新脚本分享