移除元素-JavaScript【算法学习day.04】

题目链接:27. 移除元素 - 力扣(LeetCode)

第一种思路

标签:拷贝覆盖

主要思路是遍历数组 nums,每次取出的数字变量为 num,同时设置一个下标 ans

在遍历过程中如果出现数字与需要移除的值不相同时,则进行拷贝覆盖 nums[ans] = num,ans 自增 1

如果相同的时候,则跳过该数字不进行拷贝覆盖,最后 ans 即为新的数组长度

这种思路在移除元素较多时更适合使用,最极端的情况是全部元素都需要移除,遍历一遍结束即可

时间复杂度:O(n),空间复杂度:O(1)

第一种代码:

javascript 复制代码
var removeElement = function(nums, val) {
    let ans = 0;
    for(const num of nums) {
        if(num != val) {
            nums[ans] = num;
            ans++;
        }
    }
    return ans;
};

第二种思路

• 标签:交换移除

• 主要思路是遍历数组 nums,遍历指针为 i,总长度为 ans

• 在遍历过程中如果出现数字与需要移除的值不相同时,则 i 自增 1 ,继续下一次遍历

• 如果相同的时候,则将 nums[i]与nums[ans-1] 交换,即当前数字和数组最后一个数字进行交换,交换后就少了一个元素,故而 ans 自减 1

• 这种思路在移除元素较少时更适合使用,最极端的情况是没有元素需要移除,遍历一遍结束即可

• 时间复杂度:O(n) 空间复杂度:O(1)

第二种代码:

javascript 复制代码
var removeElement = function(nums, val) {
    let ans = nums.length;
    for (let i = 0; i < ans;) {
        if (nums[i] == val) {
            nums[i] = nums[ans - 1];
            ans--;
        } else {
            i++;
        }
    }
    return ans;
};
相关推荐
ysa0510307 分钟前
Dijkstra 算法#图论
数据结构·算法·图论
失落的多巴胺29 分钟前
使用deepseek制作“喝什么奶茶”随机抽签小网页
javascript·css·css3·html5
DataGear32 分钟前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
影子信息34 分钟前
vue 前端动态导入文件 import.meta.glob
前端·javascript·vue.js
一定要AK37 分钟前
2025—暑期训练一
算法
样子201839 分钟前
Vue3 之dialog弹框简单制作
前端·javascript·vue.js·前端框架·ecmascript
kevin_水滴石穿40 分钟前
Vue 中报错 TypeError: crypto$2.getRandomValues is not a function
前端·javascript·vue.js
翻滚吧键盘41 分钟前
vue文本插值
javascript·vue.js·ecmascript
一定要AK41 分钟前
贪心专题练习
算法
森焱森1 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机