在JavaScript中将零移动到列表末尾的就地算法

假设我们得到了一个整数数组,比方说arr。我们需要编写一个函数,该函数通过就地修改列表将所有零放在数组的后面。

函数应以其他元素的相对顺序保持相同的方式执行此操作。

例如-

如果输入数组是-

const arr = [0, 11, 0, 22, 67];

然后应该将数组修改为-

const output = [11, 22, 67, 0, 0];

示例

以下是代码-

const arr = [0, 11, 0, 22, 67];
const moveZeroToEnd = (arr = []) => {
   const swap = (array, ind1, ind2) => {
      const temp = array[ind1];
      array[ind1] = array[ind2];
      array[ind2] = temp;
   };
   let j = 0;
   for (let i = 0; i < arr.length; ++ i) {
      if (arr[i] !== 0) {
         swap(arr, i, j++);
      }
   }
   while (j < arr.length) {
      arr[j++] = 0;
   };
};
moveZeroToEnd(arr);
console.log(arr);
输出结果

以下是控制台输出-

[11, 22, 67, 0, 0]