283. Move Zeroes

LeetCode easy original: C# #array #csharp #easy #leetcode #two-pointers
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.

Дан 정수 배열 nums. Переместите все нули в конец 배열а, сохраняя относительный порядок ненулевых elementов.

Обратите внимание, что вы должны сделать это на месте, не создавая копию 배열а.

예제:

Input: nums = [0,1,0,3,12]

Output: [1,3,12,0,0]

C# 해법

매칭됨/원본
public class Solution {
    public void MoveZeroes(int[] nums) {
        int lastNonZeroFoundAt = 0;
        for (int cur = 0; cur < nums.Length; cur++) {
            if (nums[cur] != 0) {
                int temp = nums[lastNonZeroFoundAt];
                nums[lastNonZeroFoundAt] = nums[cur];
                nums[cur] = temp;
                lastNonZeroFoundAt++;
            }
        }
    }
}

C++ 해법

자동 초안, 제출 전 검토
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public void MoveZeroes(vector<int>& nums) {
        int lastNonZeroFoundAt = 0;
        for (int cur = 0; cur < nums.size(); cur++) {
            if (nums[cur] != 0) {
                int temp = nums[lastNonZeroFoundAt];
                nums[lastNonZeroFoundAt] = nums[cur];
                nums[cur] = temp;
                lastNonZeroFoundAt++;
            }
        }
    }
}

Java 해법

매칭됨/원본
class Solution {
    public void moveZeroes(int[] nums) {
        int lastNonZeroFoundAt = 0;
        for (int cur = 0; cur < nums.length; cur++) {
            if (nums[cur] != 0) {
                int temp = nums[lastNonZeroFoundAt];
                nums[lastNonZeroFoundAt] = nums[cur];
                nums[cur] = temp;
                lastNonZeroFoundAt++;
            }
        }
    }
}

JavaScript 해법

매칭됨/원본
var moveZeroes = function(nums) {
    let lastNonZeroFoundAt = 0;
    for (let cur = 0; cur < nums.length; cur++) {
        if (nums[cur] != 0) {
            [nums[lastNonZeroFoundAt], nums[cur]] = [nums[cur], nums[lastNonZeroFoundAt]];
            lastNonZeroFoundAt++;
        }
    }
};

Python 해법

매칭됨/원본
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        lastNonZeroFoundAt = 0
        for cur in range(len(nums)):
            if nums[cur] != 0:
                nums[lastNonZeroFoundAt], nums[cur] = nums[cur], nums[lastNonZeroFoundAt]
                lastNonZeroFoundAt += 1

Go 해법

매칭됨/원본
func moveZeroes(nums []int) {
    lastNonZeroFoundAt := 0
    for cur := 0; cur < len(nums); cur++ {
        if nums[cur] != 0 {
            nums[lastNonZeroFoundAt], nums[cur] = nums[cur], nums[lastNonZeroFoundAt]
            lastNonZeroFoundAt++
        }
    }
}

Algorithm

Инициализация указателей:

Инициализируйте два указателя: lastNonZeroFoundAt для отслеживания позиции последнего ненулевого elementа и cur для итерации по 배열у.

Итерация и обмен elementами:

Итерируйтесь по 배열у с помощью указателя cur.

Если текущий element ненулевой, поменяйте его местами с elementом, на который указывает lastNonZeroFoundAt, и продвиньте указатель lastNonZeroFoundAt.

Завершение итерации:

Повторяйте шаг 2 до конца 배열а. В итоге все нули будут перемещены в конец 배열а, сохраняя относительный порядок ненулевых elementов.

😎

Vacancies for this task

활성 채용 with overlapping task tags are 표시됨.

전체 채용
아직 활성 채용이 없습니다.