leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

1104.cpp (593B)


0 #define LOG2(X) ((unsigned)(8 * sizeof(int) - __builtin_clz((X)) - 1))
2 class Solution {
3 int flip(int label) {
4 int log = LOG2(label), floor = 1 << log, ceil = (1 << log + 1) - 1;
5 return floor + ceil - label;
6 }
8 public:
9 vector<int> pathInZigZagTree(int label) {
10 bool rev = LOG2(label) % 2;
11 vector<int> res({label});
12 if (rev) label = flip(label);
13 while ((label /= 2) > 0) {
14 rev = !rev;
15 res.push_back(!rev ? label : flip(label));
16 }
17 reverse(res.begin(), res.end());
18 return res;
19 }
20 };