Magical String LeetCode solution in Java

1
class Solution {
2
public int magicalString(int n) {
3
if (n <= 3) return 1;
4
Magical m = new Magical();
5
int ans = 1;
6
for (int i = 3; i < n; ++i) if (m.next() == 1) ++ans;
7
return ans;
8
}
9
}
10

11
class Magical {
12

13
private Deque<Integer> nums;
14
private int n;
15

16
public Magical() {
17
nums = new ArrayDeque<>();
18
nums.offerLast(1);
19
nums.offerLast(1);
20
n = 1;
21
}
22

23
public int next() {
24
if (n-- < 0) {
25
int c = nums.pollFirst();
26
n = c - 2;
27
int curr = 3 - nums.peekLast();
28
for (; c > 0; --c) nums.offerLast(curr);
29
return curr;
30
}
31
return nums.peekLast();
32
}
33
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0