移除元素-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;
};
相关推荐
YCY^v^33 分钟前
JeecgBoot 项目运行指南
java·学习
云小逸39 分钟前
【nmap源码解析】Nmap OS识别核心模块深度解析:osscan2.cc源码剖析(1)
开发语言·网络·学习·nmap
冰暮流星39 分钟前
javascript之二重循环练习
开发语言·javascript·数据库
dazzle41 分钟前
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
人工智能·算法·机器学习
那个村的李富贵42 分钟前
智能炼金术:CANN加速的新材料AI设计系统
人工智能·算法·aigc·cann
Mr Xu_1 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
张张努力变强1 小时前
C++ STL string 类:常用接口 + auto + 范围 for全攻略,字符串操作效率拉满
开发语言·数据结构·c++·算法·stl
万岳科技系统开发1 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
张登杰踩1 小时前
MCR ALS 多元曲线分辨算法详解
算法
JustDI-CM1 小时前
AI学习笔记-提示词工程
人工智能·笔记·学习