首页 > 其他分享 >leetCode 27. Remove Element

leetCode 27. Remove Element

时间:2022-10-10 18:12:31浏览次数:81  
标签:27 val nums 复杂度 Remove fastindex 数组 leetCode 指针

[27. Remove Element]

[(https://leetcode.cn/problems/remove-element/)

image-20221010174334654

image-20221010174422554

思路

  • 数组在内存中是连续的,根据此题要求不能删除,而是覆盖

暴力解法

  • 此题暴力解法是两层for循环,一个循环遍历数组元素 ,第二个循环更新数组

  • 时间复杂度:O(n^2)

    空间复杂度:O(1)

双指针法

  • 双指针法:又叫快慢指针法, 一个快指针和慢指针在一个for循环下完成两个for循环的工作
  • 首先,我们需要定义双指针的含义:
    • 快指针:寻找新数组(不含有val)的元素
    • 慢指针:指向新数组的下标
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        if(nums.size() == 0) return 0;
        int slowindex = 0, fastindex = 0;	//定义快慢指针
        for(; fastindex < nums.size(); ++fastindex)		//因为快指针是寻找新元素,因此需限定快指针范围
        {
            //若寻找的此新元素等于val,则跳过
            if(nums[fastindex] != val)
            {
                nums[slowindex++] = nums[fastindex];
            }
        }
        return slowindex;	//因为慢指针是指向新数组的下标,因此只需返回慢指针索引值
    }
};
  • 时间复杂度:O(n)

    空间复杂度:O(1)

标签:27,val,nums,复杂度,Remove,fastindex,数组,leetCode,指针
From: https://www.cnblogs.com/chenglixue/p/16776698.html

相关文章

  • leetcode-287. 寻找重复数-数组构成的链表
    287.寻找重复数由题中数字都在[1,n]范围内(包括1和n),可知至少存在一个重复的整数。维护一个映射关系f(n)=index->num,其中数组的下标index,数字为num当一......
  • 洛谷 P3530 / bzoj2788【tarjan】【差分约束】
    判断是否有解可以使用差分约束。求解赛车手的成绩的取值可以使用Floyd。但是\(O(n^3)\)会TLE。可以先进行一次缩点。然后进行Floyd求出每一个连通块内的最长路径......
  • leetcode349.两个数组的交集
    1.题目描述给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。2.示例示例1:输入:nums1=[1,2,2,......
  • leetcode 236. Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先(中等)
    一、题目大意给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满......
  • 27、异常处理(except)
    27.1、什么是异常:1、异常介绍:异常就是程序运行时发生错误的信号,在程序出错的时候,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也会随之终止,在python中,错误触......
  • 1275:【例9.19】乘积最大
    题目链接题意简述设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积最大。同时,为了帮助选手能够正确理解题意,主持人还举......
  • leetcode-75. 颜色分类]
    75.颜色分类荷兰国旗问题,直接分成三部分[0区,1区,2区]0区最右边为less指针,开始在0的左边-12区最左边为more指针,开始在数组最后一个数的右边nums.lengthindex为指针,......
  • LeetCode算法笔记 88. 合并两个有序数组
    importjunit.framework.TestCase;importjava.util.Arrays;publicclassLeetCode02_2extendsTestCase{/***88.合并两个有序数组*给你两个......
  • 学习笔记275—C语言第2期(Windows11系统下解决VC6.0无法运行)
    Windows11系统下解决VC6.0无法运行1、右键点击图标—>选择“打开文件所在位置” 2、将“MSDEV”修改成“MSDEVL” 3、将此处“MSDEV.EXE”修改成“MSDEVL.EXE”......
  • LeetCode算法笔记 1. 两数之和
    publicclassLeetCode02_1extendsTestCase{/***1.两数之和*给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值tar......