/*
* @Author: sumBorn
* @Date: 2022-02-21 18:42:28
* @LastEditTime: 2022-02-22 14:53:29
* @Description: https://leetcode-cn.com/leetbook/read/all-about-array/x9rh8e/
*/
/**
* @description: 记录0个数,交换不是0的数与前面0的值
* @param {*}
* @return {*}
*/
public class Solution
{
public void MoveZeroes(int[] nums)
{
int zeroNum = 0;
for (var i = 0; i < nums.Length; i++)
{
if (nums[i] == 0)
{
zeroNum++;
}
else
{
if (zeroNum == 0)
{
}
else
{
//交换第一个0位置:i-zeroNum
nums[i - zeroNum] = nums[i];
nums[i] = 0;
}
}
}
}
}
/**
* @description: 双指针
* @param {*}
* @return {*}
*/
public class Solution
{
public void MoveZeroes(int[] nums)
{
int arrLength = nums.Length;
int left = 0;
for (var right = 0; right < arrLength; right++)
{
if (nums[right] != 0)
{
nums[left] = nums[right];
if (left != right) nums[right] = 0;
left++;
}
}
}
}
//双指针记录
public class Solution
{
public void MoveZeroes(int[] nums)
{
int j = 1;
for (var i = 0; i < nums.Length; i++)
{
if (nums[i] == 0)
{
while (j < nums.Length && nums[j] == 0)
{
j++;
}
if (j >= nums.Length) return;
nums[i] = nums[j];
nums[j] = 0;
}
j++;
}
}
}
网友评论