mche1987
BAN USER- -2of 2 votes
AnswersQuestion 2: Given a number 'k', return the corresponding row, given the pattern:
- mche1987 in United States
k => output
0 => []
1 => ["0", "1", "8"]
2 => ["00", "11", "69", "96", "88"]
3 => ["000", "111", "101", "888", ...] // and so on ...| Report Duplicate | Flag | PURGE
Facebook SDE1 Algorithm
function get180(num){
if(num === 0) return [];
if(num === 1) return ["0", "1", "8"];
if(num === 2) return ["00", "11", "69", "96", "88"];
return jamHelper(get180(num - 2));
}
function jamHelper(array){
var obj = {
"0": "0",
"1": "1",
"8": "8",
"9": "6",
"6": "9"
}
var holder = [];
for(var i = 0; i < array.length; i++){
for(key in obj){
holder.push(`${key}${array[i]}${obj[key]}`)
}
}
return holder;
}
// Doesn't account for the wider edge cases.
function check180(array){
var matches = {
0: 0,
1: 1,
8: 8,
6: 9,
9: 6
};
var leftIdx, rightIdx;
if(array.length % 2 === 0){
leftIdx = Math.floor(array.length/2);
rightIdx = leftIdx + 1;
} else {
var midPoint = Math.floor(array.length/2);
leftIdx = midPoint - 1;
rightIdx = midPoint + 1;
var midValue = matches[array[midPoint]];
if(!midValue || midValue === matches[6] || midValue === matches[9]){
return false;
}
}
while(leftIdx >= 0){
var leftValue = array[leftIdx];
var rightValue = array[rightIdx];
if(leftValue !== matches[rightValue] && rightValue !== matches[leftValue]){
return false;
}
leftIdx--;
rightIdx++;
}
return true;
}
A JavaScript solution
- mche1987 March 30, 2018