首页 > 其他分享 >1、删除排序数组中的重复项

1、删除排序数组中的重复项

时间:2023-03-25 22:13:20浏览次数:28  
标签:right 删除 nums int 元素 数组 排序 指针

  1. 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
    由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。
    将最终结果插入 nums 的前 k 个位置后返回 k 。
    不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例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 。不需要考虑数组中超出新长度后面的元素。

点击查看代码
package com.tjl;

/**
 * @author 田金龙
 * @Date 2023/3/25 21:54
 * @v-1.0
 */
public class Remove {
    public static void main(String[] args) {
        int i = removeDuplicates(new int[]{0,0,1,1,1,2,2,3,3,4});
        System.out.println(i);//5
    }

    //双指针解决
    public static int removeDuplicates(int[] A) {
        //边界条件判断
        if (A == null || A.length == 0)
            return 0;
        int left = 0;
        for (int right = 1; right < A.length; right++)
            //如果左指针和右指针指向的值一样,说明有重复的,
            //这个时候,左指针不动,右指针继续往右移。如果他俩
            //指向的值不一样就把右指针指向的值往前挪
            if (A[left] != A[right])
                A[++left] = A[right];
        return ++left;
    }

}

标签:right,删除,nums,int,元素,数组,排序,指针
From: https://www.cnblogs.com/tianjinlong/p/17255735.html

相关文章

  • Java入门_一维数组_第三题_数组反转
    题目:数组反转要求:把数组的内容反转。如:arr{11,22,33,44,55,66}-->{66,55,44,33,22,11}。思路-1通过具体实例得,每一次都是将arr[i]和......
  • 4878. 维护数组
    维护数组分析:分别维护两个值sum1,sum2,其他套线段树板子实现:structNode{intl,r;intminv;intsum1,sum2;}tr[N<<2];voidpushup(Node&u,N......
  • 数组指针
    一、概念下面哪个是数组指针?int*p1[10];int(*p1)[10];int(*p)[10];解释:p先和*结合,说明p是一个指针变量,然后指向一个大小为10的整型数组,所以p是一个指针,指向整型数组,叫做......
  • 用冒泡排序法实现多种类型的数据排序
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>voidswap(char*buf1,char*buf2,intwidth){ inti=0; for(i=0;i<width;i++)//实现每个字节的交换,......
  • 批量删除和如何进行部分字段修改数据
    1.单个删除和批量删除: 2.url  3.单个删除:将id为1的is_delete改成True(即1)  4.批量删除:会将包含在列表中的ID进行删除_即is_delete改为1  5.添加parti......
  • js 数组与对象的区别
    js数组与对象的区别 学习javascript的时候,我曾经一度搞不清楚”数组”(array)和”对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。 比如有一个数......
  • 由“交卷”功能引发的思考——对比两个字符串数组的差异
    最近在做一个答题系统,在交卷的时候需要判断客观题的答题情况客观题的题型有单选题、多选题、判断题其中判断题可以当做单选题处理,而单选题也可以当做标准答案长度为一的......
  • PHP二维数组排序|PHP二维数组去重
    二维数组排序functionarray_sort($arr,$keys,$order=0){ if(!is_array($arr)){ returnfalse; } $keysvalue=array(); foreach($arras$key=>$val){......
  • hdu-4630(树状数组)
    题目:Lifeisagame,andyouloseit,soyousuicide.Butyoucannotkillyourselfbeforeyousolvethisproblem:Givenyouasequenceofnumbera1,a2,...,an.T......
  • windows删除开机自启
    1、按住“windows+R”打开运行窗口2、在打开一栏输入“msconfig”,然后点击“确定”3、接下来弹出系统配置程序4、点击“启动”5、接下来你会看到开机启动项,把不......