首页 > 其他分享 >双指针删除数组中的一些元素

双指针删除数组中的一些元素

时间:2023-08-29 21:34:51浏览次数:42  
标签:slow 删除 nums 元素 fast 数组 指针

给定一个升序排列的的长度为n的数组nums,数组中每个元素都是正整数,请删除一部分这个数组的重复元素(数组元素需要原地改变),让这个数组中的每个数字都严格大于前一个数(第一个数除外),然后返回删除过后该数组的长度。例如n=4,nums=[1,2,2,3],则输出3.java代码实现

public int removeDuplicates(int[] nums) {
    if (nums.length == 0) {
        return 0;
    }
    
    int slow = 1; // 慢指针,指向下一个需要赋值的位置
    for (int fast = 1; fast < nums.length; fast++) { // 快指针,用于遍历数组
        if (nums[fast] > nums[slow-1]) { // 当前元素大于慢指针所指的前一个元素
            nums[slow] = nums[fast]; // 将当前元素赋值给慢指针所指的位置
            slow++; // 慢指针移动到下一个位置
        }
    }
    
    return slow;
}

标签:slow,删除,nums,元素,fast,数组,指针
From: https://www.cnblogs.com/chenyi502/p/17665886.html

相关文章

  • sizeof和strlen的区别及数组名的2个例外
    sizeof是一个操作符,是用来计算变量所占内存空间的大小,不关注内存中存放的具体内容,单位是字节。strlen是一个库函数,专门求字符串长度的,只能针对字符串,从参数给定的地址向后一直找’\0‘,统计’\0‘之前出现的字符个数。数组名确实是可表示首元素地址,但有2个例外:1.sizeof(数组名),这里......
  • 求数组中k个连续子数组的最大和
    要求长度为k的连续子数组的最大和,可以使用滑动窗口的方法来解决。具体步骤如下:publicintfindMaxSum(int[]nums,intk){intmaxSum=0;//最大和intcurrSum=0;//当前窗口的和//第一个窗口的求和for(inti=0;i<k;i++){currS......
  • 数据库的创建与删除
    1.数据库字段属性(重点)Unsingned:无符号的整数不能声明为负数zerofill0填充的不足的位数,使用0来填充 自增:通常理解为自增,自动在上一条记录的基础上+1(默认)。通常用来设计唯一的主键-index,必须是整数类型。可以自定义设计主键自增的起始值和步长。......
  • 智能指针详解
    文章目录一、智能指针背后的设计思想二、普通指针存在的问题三、shared_ptr类1、make_shared函数2、shared_ptr的拷贝和赋值3、shared_ptr自动销毁所管理的对象4、使用动态内存的原因:5、使用shared_ptr的一个例子:四、shared_ptr的实现和循环引用问题五、weak_ptr类1、weak_ptr详解......
  • C语言指针进阶
    目录字符指针指针数组数组指针数组指针的定义&数组名VS数组名数组指针的使用数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参一级指针二级指针数组指针函数指针函数指针数组指向函数指针数组的指针回调函数编码的三种境界:1.看代码就是代码2.看代码就是内......
  • 手撕代码之数组
    文章目录一、二维数组中的查找(leetcode240)二、旋转数组的最小数字(leetcode153)三、旋转数组中的查找(leetcode33)四、数组中出现次数超过一半的数字(leetcode169)五、把数组排成最大的数(leetcode179)六、数组中只出现一次的数字(leetcode136)七、排序数组中查找某一个数第一次和最后......
  • c++ 删除 类的拷贝和赋值函数
      #pragmaonce#include"include/cef_app.h"classHttpSchemeFactory:publicCefSchemeHandlerFactory{public:HttpSchemeFactory()=default;//删除拷贝函数HttpSchemeFactory(constHttpSchemeFactory&)=delete;//删除赋值函数H......
  • 用js reduce 写一个reduce循环遍历数组对象,里面带有if判断
    简单的reduce案例,实际场景中使用不多,这里给到一个常用的遍历数组对象!!varproducts=[{name:"Apple",price:2.5,quantity:3},{name:"Banana",price:1.5,quantity:2},{name:"Orange",price:3,quantity:4},];vartotalPrice=products......
  • 在ardiuno中把String变量#true#2a#3#转化为按照#分隔的数组, 然后再把数组第一个元素
    在Arduino中,你可以使用strtok()函数将一个String变量按照指定的分隔符切割为多个子字符串,并将它们存储到一个数组中。然后,你可以使用strcmp()函数将数组的第一个元素与字符串"true"进行比较。以下是一个示例,演示如何在Arduino中将String变量str按照#分隔符切割......
  • 代码随想录第6天|242.有效的字母异位词;349.两个数组的交集;202.快乐数;1.两数之和;
     unordered_map<int,int>map;  unordered_set<int>result;vector<vector<int>>res(n,vector<int>(n,0));声明了长度为n*n的二维数组在C++中,auto是一个关键字,用于实现类型推导,使编译器能够根据变量的初始化表达式来自动推断其数据类型。它在C++11标准中引入,......