Moving Stones Until Consecutive II LeetCode solution in Java

1
class Solution {
2
public int[] numMovesStonesII(int[] stones) {
3
int n = stones.length;
4
int[] ans = new int[2];
5
int i = 0, j = 0, wsize, scount, minMoves = Integer.MAX_VALUE;
6
Arrays.sort(stones);
7
while (j < n) {
8
wsize = stones[j] - stones[i] + 1;
9
scount = j - i + 1;
10

11
if (wsize > n) {
12
i++;
13
continue;
14
}
15

16
if (wsize == n - 1 && scount == n - 1) minMoves = Math.min(minMoves, 2);
17
else minMoves = Math.min(minMoves, n - scount);
18

19
j++;
20
}
21
ans[0] = minMoves;
22
int maxMoves = 0;
23
if (stones[1] == stones[0] + 1 || stones[n - 1] == stones[n - 2] + 1)
24
maxMoves = stones[n - 1] - stones[0] + 1 - n;
25
else
26
maxMoves =
27
Math.max(
28
((stones[n - 1] - stones[1]) - (n - 1) + 1),
29
((stones[n - 2] - stones[0]) - (n - 1) + 1));
30

31
ans[1] = maxMoves;
32
return ans;
33
}
34
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0