1+ package  com .rampatra .arrays ;
2+ 
3+ import  java .util .ArrayList ;
4+ import  java .util .List ;
5+ 
6+ public  class  FlattenArray  {
7+ 
8+     /** 
9+      * Given a nested array like [[1, 2], 3, [4]], return an array like [1, 2, 3, 4, 5]. 
10+      * 
11+      * @param nestedArray an Object array 
12+      * @return a list of all elements in the nestedArray but all at the same level 
13+      */ 
14+     private  static  List <Integer > flattenArray (Object [] nestedArray ) {
15+         if  (nestedArray  == null  || nestedArray .length  == 0 ) return  new  ArrayList <>();
16+ 
17+         List <Integer > flattenedArray  = new  ArrayList <>();
18+ 
19+         for  (Object  obj  : nestedArray ) {
20+             if  (obj  instanceof  Object []) {
21+                 flattenedArray .addAll (flattenArray ((Object []) obj ));
22+             } else  if  (obj  instanceof  Integer ) {
23+                 flattenedArray .add ((Integer ) obj );
24+             }
25+         }
26+ 
27+         return  flattenedArray ;
28+     }
29+ 
30+     public  static  void  main (String [] args ) {
31+         System .out .println (flattenArray (null ));
32+         System .out .println (flattenArray (new  Object []{null }));
33+         System .out .println (flattenArray (new  Object []{new  Object []{}}));
34+         System .out .println (flattenArray (new  Object []{new  Object []{1 , 2 }}));
35+         System .out .println (flattenArray (new  Object []{1 , 2 , new  Object []{4 , 5 }, 6 }));
36+         System .out .println (flattenArray (new  Object []{new  Object []{4 , 5 }, 1 , 2 , 6 }));
37+         System .out .println (flattenArray (new  Object []{1 , 2 , 6 , new  Object []{4 , 5 }}));
38+     }
39+ }
0 commit comments