Для реализации данной задачи можно использовать два указателя – один указывает на начало массива, а второй перемещается вперед. Когда второй указатель находит ненулевой элемент, он меняет местами его со значением, на которое указывает первый указатель, после чего оба указателя сдвигаются на одну позицию вперед.
Вот пример кода на C/C++, который выполняет данное преобразование:
#include <iostream> void moveZeroes(int* nums, int numsSize) { int zeroIndex = 0; for (int i = 0; i < numsSize; i++) { if (nums[i] == 0) { // Смена местами нулевого элемента и элемента, на который указывает zeroIndex int temp = nums[zeroIndex]; nums[zeroIndex] = nums[i]; nums[i] = temp; zeroIndex++; } } } int main() { int arr[] = {0, 1, 0, 3, 12}; int n = sizeof(arr) / sizeof(arr[0]); moveZeroes(arr, n); std::cout << "Преобразованный массив: "; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } return 0; }
Этот код работает следующим образом: он проходит по массиву, и когда находит ненулевой элемент, меняет его местами с нулевым элементом, на который указывает zeroIndex. Нулевой элемент и non-zero элемент меняются местами, после чего zeroIndex увеличивается на 1. Таким образом, все нулевые элементы будут находиться в начале массива.
Для реализации данной задачи можно использовать два указателя – один указывает на начало массива, а второй перемещается вперед. Когда второй указатель находит ненулевой элемент, он меняет местами его со значением, на которое указывает первый указатель, после чего оба указателя сдвигаются на одну позицию вперед.
Вот пример кода на C/C++, который выполняет данное преобразование:
#include <iostream>void moveZeroes(int* nums, int numsSize) {
int zeroIndex = 0;
for (int i = 0; i < numsSize; i++) {
if (nums[i] == 0) {
// Смена местами нулевого элемента и элемента, на который указывает zeroIndex
int temp = nums[zeroIndex];
nums[zeroIndex] = nums[i];
nums[i] = temp;
zeroIndex++;
}
}
}
int main() {
int arr[] = {0, 1, 0, 3, 12};
int n = sizeof(arr) / sizeof(arr[0]);
moveZeroes(arr, n);
std::cout << "Преобразованный массив: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
Этот код работает следующим образом: он проходит по массиву, и когда находит ненулевой элемент, меняет его местами с нулевым элементом, на который указывает zeroIndex. Нулевой элемент и non-zero элемент меняются местами, после чего zeroIndex увеличивается на 1. Таким образом, все нулевые элементы будут находиться в начале массива.