2
public int minMoves(int[] nums, int limit) {3
int[] oneMove = new int[2 * limit + 2];4
Map<Integer, Integer> noMove = new HashMap<>();6
for (int i = 0; i < nums.length / 2; i++) {7
int j = nums.length - 1 - i;8
noMove.merge(nums[i] + nums[j], 1, Integer::sum);9
oneMove[Math.min(nums[i], nums[j]) + 1]++;10
oneMove[Math.max(nums[i], nums[j]) + limit + 1]--;13
int ans = nums.length, one = 0;14
for (int i = 2; i <= 2 * limit; i++) {16
ans = Math.min(ans, one + 2 * (nums.length / 2 - one) - noMove.getOrDefault(i, 0));