#Javascript, 99 95 93 bytes
Javascript, 99 95 93 bytes
4 6 bytes off thanks @Neil.
a=>a.reduce((x,y)=>x.concat(b.map?b=y:[...Array(y<b?b-y:y-b||1)].map(_=>b+=y<b?-1:y>b)),b=[]) f= a=>a.reduce( (x,y)=> x.concat( b.map?b=y :[...Array(y<b?b-y:y-b||1)] .map(_=>b+=y<b?-1:y>b) ) ,b=[]) G.addEventListener('click',_=>O.innerHTML=f(JSON.parse(I.value))); <input id=I value="[3,5,5,3]"><button id=G>Go</button><pre id=O>