Leetcode 220 周赛 题解

5629. 重新格式化电话号码

模拟

注意一些细节,最后位置是否取值。

class Solution { public: string reformatNumber(string number) { string s; for (auto c: number) if (c != ' ' && c != '-') s += c; string res; for (int i = 0; i < s.size();) { if ((int)s.size() - i > 4) res = res + s[i] + s[i + 1] + s[i + 2] + '-', i += 3; else { int x = s.size() - i; if (x == 2) res = res + s[i] + s[i + 1]; else if (x == 3) res = res + s[i] + s[i + 1] + s[i + 2]; else res = res + s[i] + s[i + 1] + '-' + s[i + 2] + s[i + 3]; res += '-'; i += 4; } } res.pop_back(); return res; } };

5630. 删除子数组的最大得分

优先队列

class Solution { public: deque<int> q; map<int,int> mp; int maximumUniqueSubarray(vector<int>& nums) { int num = 0,mn = 0; for(int i = 0; i < nums.size(); i++){ if(!mp[nums[i]]) mp[nums[i]] = 1; else { while(q.size() && nums[q.front()] != nums[i]) mp[nums[q.front()]] = 0,num -= nums[q.front()],q.pop_front(); if(q.size() && nums[q.front()] == nums[i]) num -= nums[q.front()],q.pop_front(); } q.push_back(i); num += nums[i]; mn = max(num,mn); } return mn; } };

1686. 石子游戏 VI

优先队列优化dp

\[\begin{align*} & dp[i] = max(dp[i-1]~dp[(i-k)] + nums[i]);\\ \end{align*} \]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjyxf.html