首页 > 其他分享 >80. 删除有序数组中的重复项 II

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

时间:2023-03-02 21:08:34浏览次数:33  
标签:nums 元素 II length 数组 长度 80 指针

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。

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

示例 1:

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

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

 

 

class Solution {
    public int removeDuplicates(int[] nums) {
        /**
        可以使用双指针(快慢指针)
        快指针:从2开shi
        慢的从1开始
        如果快指针不等于慢指针的上一个(因为数组是排序好的) 说明不是重复的
        慢的++
         */
         if(nums.length<=2){
             return nums.length;
         }

         int low=1;int fast=2;
         while(fast<nums.length){
             if(nums[fast]!=nums[low-1]){
                 low++;
                 nums[low]=nums[fast];
             }
             fast++;
         }
         return low+1;//都是从0开始, 坐标是low,长度必须+1
    }
}

 

标签:nums,元素,II,length,数组,长度,80,指针
From: https://blog.51cto.com/u_14689911/6096732

相关文章

  • 82. 删除排序链表中的重复元素 II
    存在一个按升序排列的链表,给你这个链表的头节点head,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果......
  • 680. 验证回文字符串 Ⅱ
    给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:你可以删除c字符。 ......
  • 503. 下一个更大元素 II
    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更......
  • 659. 分割数组为连续子序列
    给你一个按升序排序的整数数组num(可能包含重复数字),请你将它们分割成一个或多个长度至少为3的子序列,其中每个子序列都由连续整数组成。如果可以完成上述分割,则返回t......
  • [oeasy]python0098_个人计算机浪潮_IBM5100_微软成立_苹果II_VisCalc
    个人计算机浪潮回忆上次内容个人电脑(PC)在爱好者之间疯传人人都有一台计算机从attair-8800到apple-1个人电脑离普通人更近了如果人人都有自己的电脑谁还去用终端连......
  • lc.209 长度最小的子数组
    题目给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其和≥target的长度最小的连续子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其......
  • 数组模拟环形数列
        ......
  • 数组指针
    数组指针:本质是指针变量,保存的是数组的首地址例如:int(*p)[5]=NULL;数组首元素地址。例如:intarr[3]={10,20,30};  arr就是首元素地址(&arr[0]==arr),a......
  • python之路 80 路飞项目、git多分支、git远程仓库、ssh方式连接远程仓库、协同开发、
    git多分支为什么要有分支可以保证,主分支的版本都是可以查看的版本我们都在开发分支开发,开发完成,合并到主分支分支操作分支查看gitbranch分支......
  • [Go语言tips03]数组与切片与...语法糖
    0.引言C中只有数组的概念,没有切片的概念;Python中只有切片的概念,没有数组的概念;Go语言同时拥有数组和切片的概念,这两者看起来没什么区别都直接通过[x]int来使用,但实际上有......