JSFiddle - React, Tailwind, and code Playground

by shakhal

HTML

<table>
    <tbody id='body'>
        
    </tbody>
</table>

CSS

table{
    border:solid;
}

JavaScript

function printArr(arr){
    var tr = $("<tr></tr>");
    for (var i in arr){
        tr.append( $("<td>"+arr[i]+"</td>") );
    }
    
    $("#body").append(tr);    
}

var inputArr = [0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0];

function calculateDistances(inputArr){
    var counter = 0;
    var foundFirstOne = false;
    var resArr = new Array(inputArr.length);
   
    //iterate array from left to right
    for(var i = 0; i < inputArr.length; i++){
        if (inputArr[i] == 1){ //look for first 1 digit in inputArr
            foundFirstOne = true;
            counter = 0;
        }
        
        if (foundFirstOne){ //put distance in resArr
            resArr[i] = counter;
            counter++;
        }
        else{ //mark digits before first 1 with MAX_VALUE
            resArr[i] = Number.MAX_VALUE;
        }
    }

    
    //iterate array backwards
    foundFirstOne = false;
    
    for(var i = inputArr.length; i >= 0; i--){
        if (inputArr[i] == 1){ //look for first 1 digit in inputArr
            foundFirstOne = true;
            counter = 0;
        }
        
        if (foundFirstOne){ //put distance in resArr
            resArr[i] = Math.min(counter, resArr[i]);
            counter++;
        }      
    }
    
    return resArr;
            
}

//print input array and res array
printArr(inputArr);
printArr(calculateDistances(inputArr));