Pregunta de entrevista de Meta
Given an array where each entry can be another array, and so forth, flatten the array. [4, [3, 6, [9, 1, 9, [5, 1]]], 8] -> [4, 3, 6, 9, 1, 9, 5, 1, 8]
Respuestas de entrevistas
Assuming that we are solving this in Java, I am treating an array as an array list
// Use Hash Set to prevent infinite loops
HashSet hs = new HashSet();
ArrayList flatten_list(ArrayList arr, HashSet hs) {
ArrayList result = new ArrayList;
int len = arr.size();
if(len < 1)
return result; // Empty List.
for(int i = 0 ; i
function serialize(a, start){
if(start >= a.length) return a;
if(Array.isArray(a[start]))
return serialize([...a.slice(0,start),...a[start], ...a.slice(start+1,a.length)], start+1);
return serialize(a, start+1);
}
const flatten = array = > {
return array.reduce((elem, acc) = > {
return elem.concat(Array.isArray(acc) ? flatten(acc) : acc)
}, [])
}
// javascript
var array = [4, [3, 6, [9, 1, 9, [5, 1]]], 8];
function flatten(array) {
return array.toString().split(',');
}
const flatten = numOrArrays => numOrArrays.reduce((result, numOrArray) => [...result, ...(Arrays.isArray(numOrArray) ? flatten(numOrArray) : [numOrArray] )], []);