Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Skyline problem */
- var input0 = [[1,4,3],[3,6,4]];
- // [first x, second x, height]
- var input1 = [[1,4,3],[3,6,4],[5,8,5],[7,10,6]];
- function findSkylines(input, knownPoints){
- // base cases
- if(knownPoints.length === 0){
- let startPoint = [input[0], input[2]];
- let endPoint = [input[1], 0];
- let array = [];
- array.push(startPoint);
- array.push(endPoint);
- return array;
- }
- // other
- let pointsArray = [];
- let startToAdd = [input[0], input[2]];
- let endToAdd = [input[1], 0];
- for(let i = 0; i<knownPoints.length-1; i++){
- var currentPoint = knownPoints[i];
- pointsArray.push(currentPoint);
- if(startToAdd[0] > currentPoint[0] && startToAdd[0] < knownPoints[i+1][0]){
- let newPoint = [startToAdd[0], input[2]];
- pointsArray.push(newPoint);
- console.log('Pushing: ');
- console.log(newPoint);
- }
- endToAdd = [Math.max(currentPoint[0], endToAdd[0]), 0];
- }
- pointsArray.push(endToAdd);
- return pointsArray;
- }
- function driver(input){
- let outputPoints = [];
- let knownPoints = [];
- for(let i = 0; i < input.length; i++){
- let buildingToAdd = input[i];
- knownPoints = findSkylines(buildingToAdd, knownPoints);
- }
- outputPoints = knownPoints;
- return outputPoints;
- }
- console.log(driver(input1));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement