📌  相关文章
📜  将所有零移动到数组末尾 | Set-2(使用单次遍历)

📅  最后修改于: 2022-05-13 01:57:49.845000             🧑  作者: Mango

将所有零移动到数组末尾 | Set-2(使用单次遍历)

给定一个包含n 个数字的数组。问题是将所有 0 移动到数组的末尾,同时保持其他元素的顺序。只需要对数组进行一次遍历。
例子:

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6}
Output : 1 2 3 6 0 0 0

Input: arr[] = {0, 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9}
Output: 1 9 8 4 2 7 6 9 0 0 0 0 0

算法:

moveZerosToEnd(arr, n)
    Initialize count = 0
    for i = 0 to n-1
        if (arr[i] != 0) then
            arr[count++]=arr[i]
    for i = count to n-1
        arr[i] = 0

CPP
// C++ implementation to move all zeroes at
// the end of array
#include 
using namespace std;
  
// function to move all zeroes at
// the end of array
void moveZerosToEnd(int arr[], int n)
{
    // Count of non-zero elements
    int count = 0;
  
    // Traverse the array. If arr[i] is non-zero, then
    // update the value of arr at index count to arr[i]
    for (int i = 0; i < n; i++)
        if (arr[i] != 0)
            arr[count++] = arr[i];
     
    // Update all elements at index >=count with value 0
    for (int i = count; i


Java
// Java implementation to move 
// all zeroes at the end of array
import java.io.*;
  
class GFG {
  
// function to move all zeroes at
// the end of array
static void moveZerosToEnd(int arr[], int n) {
      
    // Count of non-zero elements
    int count = 0;
  
    // Traverse the array. If arr[i] is non-zero, then
    // update the value of arr at index count to arr[i]
    for (int i = 0; i < n; i++)
        if (arr[i] != 0)
            arr[count++] = arr[i];
     
    // Update all elements at index >=count with value 0
    for (int i = count; i


Python3
# Python implementation to move all zeroes at
# the end of array
  
# function to move all zeroes at
# the end of array
def moveZerosToEnd (arr, n):
  
    # Count of non-zero elements
    count = 0;
  
  
    # Traverse the array. If arr[i] is non-zero, then
    # update the value of arr at index count to arr[i]
    for i in range(0, n):
        if (arr[i] != 0):
            arr[count] = arr[i]
            count+=1
     
    # Update all elements at index >=count with value 0
    for i in range(count, n):
        arr[i] = 0
  
  
  
# function to print the array elements
def printArray(arr, n):
  
    for i in range(0, n):
        print(arr[i],end=" ")
  
  
# Driver program to test above
arr = [ 0, 1, 9, 8, 4, 0, 0, 2,
    7, 0, 6, 0, 9 ]
n = len(arr)
  
print("Original array:", end=" ")
printArray(arr, n)
  
moveZerosToEnd(arr, n)
  
print("\nModified array: ", end=" ")
printArray(arr, n)
  
# This code is contributed by
# Ashutosh Singh


C#
// C# implementation to move
// all zeroes at the end of array
using System;
  
class GFG {
  
    // function to move all zeroes at
    // the end of array
    static void moveZerosToEnd(int[] arr, int n)
    {
        // Count of non-zero elements
        int count = 0;
  
      // Traverse the array. If arr[i] is non-zero, then
      // update the value of arr at index count to arr[i]
      for (int i = 0; i < n; i++)
        if (arr[i] != 0)
            arr[count++] = arr[i];
     
      // Update all elements at index >=count with value 0
      for (int i = count; i


Javascript


输出
Original array: 0 1 9 8 4 0 0 2 7 0 6 0 9 
Modified array: 1 9 8 4 2 7 6 9 0 0 0 0 0 

时间复杂度:O(n)。
辅助空间:O(1)。