【 腾讯精选练习 50 题】06—删除排序数组中的重复项【简单】

简介: 【 腾讯精选练习 50 题】06—删除排序数组中的重复项【简单】

题目链接

26. 删除排序数组中的重复项【简单】

题目简介

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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

示例 1:

给定数组 nums = [1,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。
你不需要考虑数组中超出新长度后面的元素。

题目解析

  1. 看完题目,有些懵
  2. 大概的意思是:给你一段排序的数组,让你将重复的放后面,最后输出的是一个不重复的字段
  3. 利用双指针:left = 0、right = 0
  • 如果 nums[left] == nums[right] 相当于 当前指向的数值是一样的,我们将 right 右移
  • 如果 nums[left] != nums[right] 相当于 当前指向的数值不一样,我们进行 nums[++left] = nums[right]
  • 最后返回 left + 1 即可

题目代码

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length == 0){
            return 0;
        }
        int left = 0;
        int right = 0;
        while(left <= right && right < nums.length){
            if(nums[left] != nums[right]){
                nums[++left] = nums[right];
            }
            right++;
        }
        return left + 1;
    }
}


相关文章
|
7月前
|
算法
【 腾讯精选练习 50 题】09—寻找两个正序数组的中位数【困难】
【 腾讯精选练习 50 题】09—寻找两个正序数组的中位数【困难】
【 腾讯精选练习 50 题】14—合并两个有序数组【简单】
【 腾讯精选练习 50 题】14—合并两个有序数组【简单】
|
2月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
21 4
|
4月前
|
机器学习/深度学习 算法
【刷题记录】合并两个有序数组、移除元素
【刷题记录】合并两个有序数组、移除元素
|
Go 索引 Cloud Native
【刷题日记】34. 在排序数组中查找元素的第一个和最后一个位置
本次刷题日记的第 72 篇,力扣题为:34. 在排序数组中查找元素的第一个和最后一个位置 ,中等
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
|
算法
【算法挨揍日记】day10——704. 二分查找、34. 在排序数组中查找元素的第一个和最后一个位置
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
364 0
|
Cloud Native
【刷题日记】82. 删除排序链表中的重复元素 II
本次刷题日记的第 105 篇,力扣题为:82. 删除排序链表中的重复元素 II
|
算法 索引
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #
|
算法 前端开发
每日两题 - 合并K个升序链表 + 删除有序数组的重复项 🏆
每日两题 - 合并K个升序链表 + 删除有序数组的重复项 🏆
115 0
每日两题 - 合并K个升序链表 + 删除有序数组的重复项 🏆