javascript - 移动零逻辑分解Javascript
问题描述
我正在研究我在 leetcode 的讨论部分中看到的这个解决方案,并且无法掌握部分逻辑。游戏的名称是将所有零移动到给定数组的末尾,同时保持其他数字的顺序。j 索引内的增量运算符是我迷路的地方,因为那不是将非零数放在右边吗?
var moveZeroes = function(nums) {
let j = 0
for(let i = 0; i < nums.length; i++) {
if(nums[i] !== 0) {
//storing the index we are iterating on
let n = nums[i]
//changing the index in place to 0
nums[i] = 0
//console.log(nums);
//
nums[j++] = n
console.log(nums);
}
}
return nums;
};
console.log(moveZeroes([0,1,0,3,12]));
解决方案
只需删除所有零。将已删除的零添加到末尾。
var moveZeroes = (nums) =>
(
nums.toString().replaceAll("0,", "") +
",0".repeat(("" + nums).replace(/[^0]/g, "").length)
)
.split(",")
.map(Number);
console.log(moveZeroes([0, 1, 0, 0, 3, 0, 12])); //[ 1, 3, 12, 0, 0, 0, 0 ]
笔记:
(""+nums).replace(/[^0]/g,'').length
: 数组中 0 的个数nums.toString()
:要将数组转换为我们使用的字符串,或者我们可以使用与空字符串连接的技巧,例如""+nums
split(',')
: 将字符串转换为数组map(Number)
:将字符串数组转换为数字。
推荐阅读
- javascript - 用于圆环图的图表 js 在 HTML 页面上不起作用
- php - 如何执行从 url 提供参数的特定 php 脚本方法
- c# - 循环参考 Delphi vs C#
- python - 在 Python 中使用多处理的简单流程管理器
- php - 通过 PHP foreach 循环按钮将数据提交到 mysql 数据库的单行
- python - Python get 和 post 请求因 Connection 和 GetAddrinfo 而失败
- c - 将数组的布尔值推送到 uint8 位域
- php - 在 Laravel Vue 中通过集合关系设置数据
- php - 设置数据表编辑器时出现致命错误
- javascript - 将 preventDefault 添加到无序列表的任何列表元素中?