Dealing neighbor list in NVT Monte Carlo (MC) simulation

I'm making a NVT Monte Carlo (MC) simulation code with only short range interaction.

I found many MC tutorial codes (usually Lennard-Jones system) in online. However, most of them are doing energy calculation without using neighbor list. I want to see how and when neighbor list is built and updated during MC simulation. I have a few questions on it.

1) I'm using neighbor list with cell-list method. At each trial move, I should update it. In Molecular Dynamics, I should update whole neighbor list (and cell list). In MC, however, there are a number of moves in a cycle. the number of moves is equal to that of particles. It would be computationally expensive to do many neighbor buildings. So I think there would be a method something like partial neighbor list updating. But I cannot find reference for it. Is this idea correct or should I update whole neighbor list every move?

2) Is it good idea to build N-by-N array which stores between any i and j particle (i=1,2,...,N)? the array, from which the distance is referred, can give distance which can be used to calculate interaction energy. I think it's good idea to use but, in junction with 1), it should be updated with neighbor list. I'm afraid it would slow down the simulation if I bring such huge array.

For 2) The complexity of $$N \times N$$ matrix is $$O(N^2)$$ which is unacceptable.