26. 删除有序数组中的重复项 Leetcode经典面试题

简介: 26. 删除有序数组中的重复项 Leetcode经典面试题

这个也是使用双指针的方式,但是基于数组。

  1. 使用两个指针 ni,其中 n 用于标记新数组的长度,初始值为0,而 i 用于遍历原始数组 nums
  2. 从头开始遍历nums数组,对于每个元素nums[i],进行以下检查:
  • 如果 nums[n] 不等于 nums[i],表示找到了一个新的不重复的元素,将其复制到新数组的下一个位置(nums[++n] = nums[i])。
  • 如果 nums[n] 等于 nums[i],表示这是一个重复元素,跳过它。
  1. 继续遍历整个数组,直到 i 到达数组的末尾。
  2. 返回 n + 1 的值,这个值表示新数组的长度,其中 n 是新数组的最后一个元素的索引,再加1。

这个算法通过只遍历一次数组,将不重复的元素逐个复制到新数组的开头,并保持新数组的长度,实现了从已排序数组中去除重复元素的目的。这是一种高效的方式,因为它只需要一次遍历数组,时间复杂度为 O(n),其中 n 是数组的长度。

举个例子,如果原始数组 nums[1, 1, 2, 2, 2, 3, 4, 4, 5],使用这个算法后,新数组会变成 [1, 2, 3, 4, 5],同时返回值 n + 1 为 5,表示新数组的长度。

class Solution {
    public int removeDuplicates(int[] nums) {
        int n=0;
        for(int i=0;i<nums.length;i++){
            if(nums[n]!=nums[i]){
                nums[++n]=nums[i];
            }
        }
        return n+1;
    }
}


相关文章
|
1月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
33 2
|
3月前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
1月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
19 4
|
1月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
38 0
|
3月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
3月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
3月前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
56 6
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
113 2