Minimum Number of Days to Eat N Oranges LeetCode solution in C++
1class Solution {2public:3// approach: BFS4int minDays(int n) {5int cnt = 0;6queue<int> q;7q.push(n);8unordered_set<int> s;9s.insert(n);10while (!q.empty()) {11int l = q.size();12while (l--) {13int a = q.front();14q.pop();15if (a == 0) break;16if (s.find(a - 1) == s.end()) {17q.push(a - 1);18s.insert(a - 1);19}20if (!(a & 1) && s.find(a >> 1) == s.end()) { // if divisible by 2 and a/2 not present in set21q.push(a >> 1);22s.insert(a >> 1);23}24if (a % 3 == 0 &&25s.find(a / 3) == s.end()) { // if divisible by 3 and a/3 not present in set26q.push(a / 3);27s.insert(a / 3);28}29}30cnt++;31if (s.find(0) != s.end()) break;32}33return cnt;34}35};