LeetCode系列之 (JavaScript) => 27. 移除元素
题目描述:
解题思路分析:
题目要移除指定的值,可以用到lodash 里面的_.remove() 方法;
可以使用快慢指针,首先快指针是一直移动,如果和指定的值不相等,就改变原有数组慢指针指向的值,慢指针移动一位,如果相等,就只移动快指针,最后返回在数组中不同于指定值的元素个数,即慢指针加1;
不同解法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | /** * @param {number[]} nums * @param {number} val * @return {number} */ // self: 使用lodash 的remove 方法, // 返回移除元素组成的新数组; // 改变原来数组,变成删除后的数组 var removeElement = function (nums, val) { _.remove(nums, (v) => v == val); return nums.length; }; // 快慢指针 // 快指针:遍历数组; 慢指针:记录不相等的值 // !!! 重点关注慢指针变化 和返回值,slow 已经是加1以后的了 // !!! while循环一定要考虑迭代的变量 var removeElement = function (nums,val){ var fast = 0; var slow = 0; var len = nums.length; // while(fast < len){ // if(nums[fast] != val){ // // console.log('before'+slow) // nums[slow++] = nums[fast]; // // console.log('after'+slow) // } // fast++; // } for (fast; fast<len; fast++){ if (nums[fast] != val){ nums[slow] = nums[fast]; slow++; } } return slow; } // 大牛 solution var removeElement = function (nums,val){ for ( var i = 0; len = nums.length, i<len; i++){ if (nums[i] == val){ nums.splice(i,1); i--; // 非常关键的一步 } } return nums.length; } // 大牛 solution v2 var removeElement = function (nums,val){ var len = nums.length; var i = 0; while (i<len){ if (nums[i] == val){ nums[i]= nums[len-1]; len--; } else { i++; } } return len; } |
参考链接:
本文来自博客园,作者:77工作室,转载请注明原文链接:https://www.cnblogs.com/z7luv/p/15931088.html
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理