classSolution { public: voidrecursion(string s, int total, int cur){ if (total == n) { while (cur > 0) { s += ')'; cur--; } vec.push_back(s); return; } recursion(vec, s + '(', total + 1, cur + 1, n); if (cur > 0) recursion(vec, s + ')', total, cur - 1, n); }
classSolution { public: intmovingCount(int m, int n, int k){ int id[2] = {0, 1}; int jd[2] = {1, 0}; vector<vector<bool>> visited(m, vector<bool>(n, false)); queue<pair<int, int>> q; q.push(make_pair(0, 0)); visited[0][0] = true; int ans = 1;
while (!q.empty()) { pair<int, int> cur = q.front(); q.pop(); int i = cur.first, j = cur.second; for (int mv = 0; mv < 2; mv++) { if (i + id[mv] < m && j + jd[mv] < n && !visited[i + id[mv]][j + jd[mv]]) { int sum = 0; int loci = i + id[mv], locj = j + jd[mv]; while (loci > 0) { sum += loci % 10; loci /= 10; } while (locj > 0) { sum += locj % 10; locj /= 10; } if (sum <= k) { q.push(make_pair(i + id[mv], j + jd[mv])); ans++; } visited[i + id[mv]][j + jd[mv]] = true; } } }
classSolution { public: inttrap(vector<int>& height){ int n = height.size(); int ans = 0;
vector<int> leftIndex(n, 0), rightIndex(n, n - 1); for (int i = 1; i < n - 1; i++) { leftIndex[i] = height[leftIndex[i - 1]] >= height[i - 1] ? leftIndex[i - 1] : i - 1; rightIndex[n - i - 1] = height[rightIndex[n - i]] >= height[n - i] ? rightIndex[n - i] : n - i; }
for (int i = 1; i < n - 1; i++) { int minHeight = min(height[leftIndex[i]], height[rightIndex[i]]); if (minHeight > height[i]) ans += minHeight - height[i]; }
/** * Your LFUCache object will be instantiated and called as such: * LFUCache* obj = new LFUCache(capacity); * int param_1 = obj->get(key); * obj->put(key,value); */
return val; } voidput(int key, int value){ if (capacity == 0) return;
if (key_table.count(key) == 1) { if (get(key) != value) key_table[key]->value = value; } else { if (key_table.size() == capacity) { key_table.erase(freq_table[minFreq].back().key); freq_table[minFreq].pop_back(); // if (freq_table[minFreq].empty()) // freq_table.erase(minFreq); } freq_table[1].push_front(node(key, value, 1)); key_table[key] = freq_table[1].begin(); minFreq = 1; } } private: unordered_map<int, list<node>::iterator> key_table; unordered_map<int, list<node> > freq_table; int minFreq; int capacity; };
/** * Your LFUCache object will be instantiated and called as such: * LFUCache* obj = new LFUCache(capacity); * int param_1 = obj->get(key); * obj->put(key,value); */