move_zeros(items) that moves all 0 values in items to the end of the list while preserving the relative order of the non-zero elements. Modify and return the same list object (in place), using a two-pointer technique.items = [0, 1, 0, 3, 12]
[1, 3, 12, 0, 0]
Non-zero elements keep their order; zeros are pushed to the end.
Use a "write pointer" that tracks where the next non-zero value should go.
After placing all non-zero values, fill the remaining tail with zeros.