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

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

第一种思路

标签:拷贝覆盖

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

在遍历过程中如果出现数字与需要移除的值不相同时,则进行拷贝覆盖 numsans = 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 ,继续下一次遍历

• 如果相同的时候,则将 numsi与numsans-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;
};
相关推荐
jinglong.zha几秒前
LScript-从零基础到商业变现的AI自动化学习平台
运维·学习·自动化
DXM052111 分钟前
第9期|从机器学习到深度学习:AI遥感解译的进化逻辑
人工智能·算法·计算机视觉
小蒋学算法18 分钟前
算法-阶乘函数后K个零
算法
闪闪发亮的小星星21 分钟前
STK_00 学习方案路线
学习
weixin_3077791325 分钟前
智能模拟数据生成平台:生成式AI合成数据技术重塑开发测试效能
人工智能·测试工具·算法·测试用例
Darling噜啦啦29 分钟前
JavaScript 数组深度解析:从纯函数到二维数组陷阱,一文吃透前端数据结构核心
前端·javascript·数据结构
万少29 分钟前
一封邮件,让我重新打开了搁置半年的鸿蒙应用
前端·javascript·后端
To_OC1 小时前
从一段定时器代码,重新捋清 JS 同步、异步与 Promise
前端·javascript·代码规范
一楼的猫1 小时前
茄子写作助手——品牌搜索突破9万后的技术型品牌认知与官网入口指南
人工智能·学习·机器学习·chatgpt·ai写作
AOwhisky1 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算