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)) 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 } 7 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 };