64 lines
1.2 KiB
C++
64 lines
1.2 KiB
C++
|
//Given an array of random numbers, Push all the zero’s of a given array to the end of the array.
|
|||
|
//For example, if the given arrays is {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, it should be changed to {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}.
|
|||
|
//The order of all other elements should be same.
|
|||
|
|
|||
|
#include <bits/stdc++.h>
|
|||
|
using namespace std;
|
|||
|
|
|||
|
|
|||
|
void movetoend(int arr[], int n)
|
|||
|
{
|
|||
|
int cnt = 0;
|
|||
|
|
|||
|
// Traverse the array. If element encountered is non-zero,
|
|||
|
// then replace the element at index cnt
|
|||
|
// with this element
|
|||
|
for (int i = 0 ; i < n; i++)
|
|||
|
if (arr[i] != 0)
|
|||
|
arr[cnt++] = arr[i];
|
|||
|
|
|||
|
while (cnt < n)
|
|||
|
arr[cnt++] = 0;
|
|||
|
|
|||
|
// Now all non-zero elements have been shifted to left
|
|||
|
// and all zero to the right to the right
|
|||
|
for (int i = 0; i < n; i++)
|
|||
|
cout << arr[i] << " ";
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
int n;
|
|||
|
cout << "Enter the size" << endl;
|
|||
|
cin >> n;
|
|||
|
|
|||
|
int arr[n];
|
|||
|
cout << "Enter the array" << endl;
|
|||
|
for (int i = 0; i < n; i++)
|
|||
|
{
|
|||
|
cin >> arr[i];
|
|||
|
}
|
|||
|
|
|||
|
int k;
|
|||
|
cout << "Array after moving all zeros to end is :" << endl;
|
|||
|
movetoend(arr, n);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
|
|||
|
Sample Input:
|
|||
|
|
|||
|
Enter the size
|
|||
|
4
|
|||
|
Enter the array
|
|||
|
1 0 9 0
|
|||
|
Array after moving all zeros to end is :
|
|||
|
1 9 0 0
|
|||
|
|
|||
|
**Time Complexity: O(n), n is the size of the array
|
|||
|
**Space Complexity: O(1)
|
|||
|
|
|||
|
*/
|