Saturday, February 3, 2018

LeetCode 779. K-th Symbol in Grammar - Weekly Contest 70

https://leetcode.com/contest/weekly-contest-70/problems/k-th-symbol-in-grammar/



boolean[] a = new boolean[]{false, true, true, false};
public int kthGrammar(int N, int K) {
// filter abnormal cases
if (K <= 4) {
if (a[K - 1]) {
return 1;
} else {
return 0;
}
}
int k = K;
boolean isReversed = false;
while (k > 4) {
if (k % 2 == 1) {
k += 1;
isReversed = !isReversed;
k /= 2;
isReversed = !isReversed;
} else {
k /= 2;
isReversed = !isReversed;
}
}
if (a[k - 1]) {
return isReversed ? 0 : 1;
} else {
return isReversed ? 1 : 0;
}
}

No comments:

Post a Comment