Trace through nums = [0, 1, 0, 3, 12].
Start: write = 0.
i=0: nums[0]=0. Zero, skip. write stays at .
i=1: nums[1]=1. Non-zero. Swap nums[1] and nums[0]. Array: [1,0,0,3,12]. write moves to .
i=2: nums[2]=0. Zero, skip.
i=3: nums[3]=3. Non-zero. Swap nums[3] and nums[1]. Array: [1,3,0,0,12]. write moves to .
i=4: nums[4]=12. Non-zero. Swap nums[4] and nums[2]. Array: [1,3,12,0,0]. Done.
time with a single pass. space since you modify in-place.