@@ -39,10 +39,33 @@ int[] LeaveTwoDuplicates(int[] arrayOfNumbers)
3939
4040 int [ ] RemoveElement ( int [ ] arrayOfNumbers , int elementToRemove )
4141 {
42- return arrayOfNumbers . Where ( element => element != elementToRemove )
42+ return arrayOfNumbers
43+ . Where ( element => element != elementToRemove )
4344 . ToArray ( ) ;
4445 }
4546
47+ int [ ] MoveZeros ( int [ ] arrayOfNumbers )
48+ {
49+ var zeroCount = 0 ;
50+ var listOfElements = new List < int > ( ) ;
51+ for ( int index = 0 ; index < arrayOfNumbers . Length ; index ++ )
52+ {
53+ var actualElement = arrayOfNumbers [ index ] ;
54+ if ( actualElement == 0 )
55+ {
56+ zeroCount ++ ;
57+ }
58+ else
59+ {
60+ listOfElements . Add ( actualElement ) ;
61+ }
62+ }
63+ listOfElements
64+ . AddRange ( Enumerable . Range ( 1 , zeroCount )
65+ . Select ( x => 0 ) ) ;
66+ return listOfElements . ToArray ( ) ;
67+ }
68+
4669 [ Test ]
4770 public void RemoveDuplicatesFromSortedArray_1 ( )
4871 {
@@ -76,5 +99,16 @@ public void RemoveElement_3()
7699
77100 Assert . AreEqual ( expectedArrayWithElements , arrayWithRemoveElement ) ;
78101 }
102+
103+ [ Test ]
104+ public void MoveZeros_4 ( )
105+ {
106+ var arrayWithZeros = new int [ ] { 1 , 0 , 5 , 0 , 0 , 3 } ;
107+ var expectedArrayWithZerosInTheEnd = new int [ ] { 1 , 5 , 3 , 0 , 0 , 0 } ;
108+
109+ var arrayWithRemoveElement = MoveZeros ( arrayWithZeros ) ;
110+
111+ Assert . AreEqual ( expectedArrayWithZerosInTheEnd , arrayWithRemoveElement ) ;
112+ }
79113 }
80114}
0 commit comments