283. Move Zeroes
Дан 整数 数组 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 已显示.