第 357 场周赛 - 力扣
第 357 场周赛 - 力扣(LeetCode)
2810. 故障键盘 - 力扣(LeetCode)
如题模拟即可
class Solution { public: string finalString(string s) { string ans = ""; for(int i = 0;i < s.size(); i++){ if(s[i] == 'i'){ std::reverse(ans.begin(), ans.end()); }else ans += s[i]; } return ans; } };
2811. 判断是否能拆分数组 - 力扣(LeetCode)
\(n\le2\)时总是能满足要求,\(n>3\)时,只要其中有一对相邻数大于等于\(m\),我们都可以一个一个地去掉除这两元素之外的其他元素,最后剩这两元素也满足条件
class Solution { public: bool canSplitArray(vector<int>& nums, int m) { int n = nums.size(); if(n <= 2) return true; for(int i = 1;i < n;i ++) if(nums[i] + nums[i - 1] >= m) return true; return false; } };
2812. 找出最安全路径 - 力扣(LeetCode)(多源BFS最短路)
如果直接去找路径,那么每个点都要去计算一遍,这样在当数据大时很容易超时,所以我们可以先去预处理出每个单元格的安全系数,然后从中选出一条安全系数最大的路径即可,这样就大大降低了时间复杂度.
由于本题一个是矩阵图,所以可以用\(BFS\)计算各个单元安全系数
然后我们从\((0,0)\)开始,将每次访问顶点的四周可访问点都按\(\{安全系数,坐标\}\)存入优先队列,然后每次去选取当前路径安全系数最优的点,答案也要随着更新最小的安全系数,最后到达\((n-1,n-1)\)时返回\(ans\)即可
class Solution { public: int maximumSafenessFactor(vector<vector<int>>& grid) { typedef pair<int,int> PII; int n = grid.size(); int u[] = {1,-1,0,0}; int v[] = {0,0,1,-1}; queue<PII> Q; vector dis(n,vector<int>(n,-1)); for (int i = 0;i < n;i ++) for (int j = 0; j < n; ++j) if(grid[i][j]){ Q.emplace(i,j); dis[i][j] = 0; } vector vis(n,vector<bool>(n,false)); while(Q.size()){ auto [x,y] = Q.front(); Q.pop(); for(int i = 0;i < 4;i ++){ int dx = x + u[i]; int dy = y + v[i]; if(dx >= 0 && dy >= 0 && dx < n && dy < n && dis[dx][dy] < 0){ Q.emplace(dx,dy); dis[dx][dy] = dis[x][y] + 1; } } } priority_queue<pair<int,PII>> QQ; QQ.push({dis[0][0],{0,0}}); vis[0][0] = true; int ans = n << 1; while(QQ.size()){ auto [w,xy] = QQ.top(); QQ.pop(); auto [x,y] = xy; ans = min(w,ans); if(x == n - 1 && y == n - 1) return ans; for(int i = 0;i < 4;i ++){ int dx = x + u[i]; int dy = y + v[i]; if(dx >= 0 && dy >= 0 && dx < n && dy < n && !vis[dx][dy]){ QQ.push({dis[dx][dy],{dx,dy}}); vis[dx][dy] = true; } } } return 0; } };
本文作者:Ke_scholar
本文链接:https://www.cnblogs.com/Kescholar/p/17615620.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步