Skip to content

Instantly share code, notes, and snippets.

@yekmer
Created February 4, 2014 20:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yekmer/8812223 to your computer and use it in GitHub Desktop.
Save yekmer/8812223 to your computer and use it in GitHub Desktop.
Write some code, that will flatten an array of arbitrarily nested arrays of integers into a flat array of integers. e.g. [[1,2,[3]],4] -> [1,2,3,4]
package com.yekmer.interview.intercom;
import java.util.LinkedList;
import java.util.Queue;
public class NestedArrays {
public static void main(String[] args) {
//sample for this output [[1,2,[3]],4] -> [1,2,3,4]
Object[] objArr = new Object[2];
objArr[0] = new Object[3];
((Object[]) objArr[0])[0] = new Integer(1);
((Object[]) objArr[0])[1] = new Integer(2);
((Object[]) objArr[0])[2] = new Object[1];
((Object[])((Object[]) objArr[0])[2])[0] = new Integer(3);
objArr[1] = new Integer(4);
Queue<Integer> resultQueue = new LinkedList<Integer>();
mergeArrays(objArr, resultQueue);
System.out.println(resultQueue);
}
//simple depth first search for this solution
private static void mergeArrays(Object[] objArr, Queue<Integer> resultQueue) {
for(int i = 0; i < objArr.length; i++) {
if(objArr[i] instanceof Object[]) {
mergeArrays((Object[]) objArr[i], resultQueue);
} else if(objArr[i] instanceof Integer) {
resultQueue.add((Integer)objArr[i]);
} else {
System.out.println("what?");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment