Computer >> Máy Tính >  >> Lập trình >> Javascript

Thuật toán tại chỗ để di chuyển Zeros đến cuối danh sách trong JavaScript

Giả sử chúng ta được cung cấp một mảng các số nguyên, giả sử arr. Chúng tôi bắt buộc phải viết một hàm nhập tất cả các số không vào phía sau của mảng bằng cách sửa đổi danh sách tại chỗ.

Hàm phải thực hiện điều này theo cách mà thứ tự tương đối của các phần tử khác phải giữ nguyên.

Ví dụ -

Nếu mảng đầu vào là -

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

Sau đó, mảng sẽ được sửa đổi thành -

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

Ví dụ

Sau đây là mã -

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);

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[11, 22, 67, 0, 0]