首页 > 其他分享 >移除数组中的元素返回新数组的长度,双指针实现

移除数组中的元素返回新数组的长度,双指针实现

时间:2023-07-08 13:35:44浏览次数:24  
标签:arr val nums int fast 数组 移除 指针

/**
     * 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
     *
     * 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。
     *
     * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
     *
     * 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。
     *
     * 示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
     */

    public int remove(int[] arr,int val){
        int slow = 0;
        for (int fast = 0; fast < arr.length; fast++) {
            if(arr[fast] != val){
                arr[slow] = arr[fast];
                slow++;
            }
        }
        return slow;
    }

    @Test
    public void test(){
        //int[] arr = new int[]{3,2,2,3};
        int[] arr = new int[]{0,1,2,2,3,0,4,2};
        int remove = remove(arr, 2);
        System.out.println(remove);
    }

  定义快慢两个指针,快的指向新数组中的value,慢的指向新数组中的索引。

标签:arr,val,nums,int,fast,数组,移除,指针
From: https://www.cnblogs.com/sgj191024/p/17537092.html

相关文章

  • 如何实现MySQL 字符串转换成数组的具体操作步骤
    MySQL字符串转换成数组在MySQL中,我们经常需要对字符串进行处理和转换。有时候,我们需要将一个字符串拆分成多个部分,然后进行进一步的处理。这时,将字符串转换成数组是一种常见的操作。方法一:使用SUBSTRING_INDEX函数MySQL提供了SUBSTRING_INDEX函数,可以用于将一个字符串按照指定......
  • 解决Java中的byte数组不够补空格的具体操作步骤
    Java中的byte数组不够补空格在Java编程中,我们经常需要处理二进制数据,其中byte数组是一种常见的数据类型。然而,在某些情况下,我们可能需要将byte数组的长度扩展到指定的长度,不足的部分用空格进行补齐。本文将介绍在Java中如何实现byte数组的补齐操作,并提供相关代码示例。为什么需要......
  • 167. 两数之和 II - 输入有序数组
    给你一个下标从1开始的整数数组 numbers,该数组已按非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1<=index1<index2<=numbers.length。以长度为2的整数数组[index1,i......
  • 二分法查找目标元素在数组中的索引
    /***给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,*如果目标值存在返回下标,否则返回-1。*输入:nums=[-1,0,3,5,9,12],target=9*输出:4*解释:9出现在nums中并且下标为4......
  • Java中的字符串到数组 – 如何将字符串转换为数组
    当您开发文本处理应用程序或处理数据时,能够将字符串转换为数组非常有帮助。Java中的字符串是一组字符,而数组是同一类型元素的集合。您可以使用转换过程将字符串解构为各个部分,然后将这些部分存储在数组中以供进一步操作或分析。本文将为您介绍各种将字符串转换为数组的Java技......
  • 数组对象如何赋值给JToken
    提问数组对象如何赋值给JToken回答创建一个JsonArray字符串将字符串装维JArrayJArray赋值给JTokenvarstrIps=$"[\"{string.Join("\",\"",rootObject.IpRateLimiting.IpWhitelist)}\",\"::1/10\"]";varips=JArray.Parse(s......
  • 数组的简单应用
    //slice截取console.log(arr.slice(1,3))//返回一个数组,从1开始截取,到3结束,不包括3console.log(arr)//原数组不变//push后面添加//pop后面删除//shift前面删除//unshift前面增加//splice功能非常强大,可以在任意位置增删改//改arr.splice......
  • TS,对数组多个属性同时排序
    constlist=[{name:'John',age:25},{name:'Alice',age:30},{name:'Bob',age:20}];list.sort((a,b)=>{//首先按照name属性进行升序排序if(a.name>b.name){return1;}elseif(a.name<b.na......
  • 数组方法
    数组方法一、数组的增删constarr=['a','b','c','d','e','f','g','h']后面添加pusharr.push('j')后面删除poparr.pop()前面删除shiftarr.shift()前面添加unshiftarr.unshift('j')......
  • 一维数组
    一维数组一维数组定义&形式是一组数据类型相同的变量,可以存放一组数据数组名[下标]❗数组地址数组在内存中的地址是连续的C++将数组名解释为数组首个元素的地址⚠数组名为常量,不能更改,例如int类型数组a使用a++❎指针值可以改变,int*p=a使用p++✅数组第0个元......