前端算法-移除元素

简介: 前端算法-移除元素

题目


给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度,不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组,元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

我们这里使用for循环结合splice的方法进行实现,我们进去就对出参nums进行循环,在循环中使用if语句进行判断当前循环中出参nums的值是否与出参val相等,如果相等则对出参nums使用splice方法,将当前循环中的值从出参nums中截取出去,并将当前循环中用于获取nums值的i变量进行自减1,如果不相等则将i变量自增1,循环完成之后将当前出参nums长度返回出去即可

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    for(var i=0 ; i < nums.length;){
        if( nums[i] == val){
            nums.splice(i,1)
            i--
        }else{
            i++
        }
    }
     return nums.length;
};

我们这里还可以使用倒序的方式实现,使用for循环的方式对出参nums进行循环,循环变量i初始值是出参nums的长度减1,每次循环进行i--,在循环中,我们声明一个el变量,我们每次循环都对出参nums使用pop方法,获取出参nums的末尾值并赋值给el变量,然后使用if语句进行判断,当前el变量值和出参val是否相等,如果不相等则将当前的el变量值,通过unshift方法重新插入到出参nums中,当循环结束后,直接返回出参nums的数据长度

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
  for(let i = nums.length - 1; i >= 0; i--) {
    let el = nums.pop();
    if(el !== val) {
      nums.unshift(el);
    }
  }
  return nums.length;
};
相关文章
|
27天前
|
算法
数据结构和算法学习记录——习题-移除链表元素
数据结构和算法学习记录——习题-移除链表元素
14 0
|
2月前
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
12天前
|
存储 算法 Java
Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。
【6月更文挑战第21天】Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。简单哈希表实现未涵盖冲突解决和删除操作。
16 1
|
19天前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
20小时前
|
前端开发
前端 CSS 经典:保持元素宽高比
前端 CSS 经典:保持元素宽高比
4 0
|
1天前
|
缓存 算法 前端开发
前端 JS 经典:LRU 缓存算法
前端 JS 经典:LRU 缓存算法
5 0
|
25天前
|
前端开发 算法 JavaScript
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。
|
27天前
|
算法 搜索推荐 Java
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
16 3
|
7天前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素
|
2月前
|
前端开发