
栈与队列
sigd
这个作者很懒,什么都没留下…
展开
-
【2021】腾讯秋招技术岗编程 安排超市
解题思路:迷宫类问题,确定有多少个包含房子的连通块。在连通块内部选定一点建设一个超市,使得距离最短。bfs确定连通块,bfsC用于计算在某点建设超市的距离。#include <bits/stdc++.h>typedef long long ll;using namespace std;int n,v[55][55],cnt,sum;int dx[4]= {0,0,1,-1},dy[4]= {1,-1,0,0};char a[55][55];int bfsC(int ...原创 2022-04-22 08:28:15 · 446 阅读 · 2 评论 -
【2021】腾讯秋招技术岗编程 有效序列的数量
如果序列中数据都不重复,那么这个题目难度会小很多。本文介绍三种解法。(1)暴力枚举法暴力枚举子序列左右端点i和j,检查a[i+1]到a[j-1]间是否有比端点更小的值,复杂度O(N^3)。可得20分。(2)RMQ优化RMQ(Range Minimum/Maximum Query)可以看成是一种查找结构,能快速找到区间内极值,每次查找的复杂度是O(1)级别。这样可以把上述算法“检查a[i+1]到a[j-1]间是否有比端点更小的值”优化,整个算法复杂度O(N^2),可得70分。介绍...原创 2022-04-20 21:18:19 · 1008 阅读 · 0 评论 -
19120 病毒扩散
解题思路:多起点的bfs问题。由于有步数限制,因此需要在入队前后做下步数检查。#include <bits/stdc++.h>typedef long long ll;using namespace std;struct node{ int x,y;};int n,m,X,v[1005][1005];int dx[8]= {0,0,1,-1,1,1,-1,-1};int dy[8]= {1,-1,0,0,1,-1,1,-1};char a[1005][100...原创 2022-04-10 16:25:40 · 603 阅读 · 0 评论 -
力扣 第 283 场周赛 2197. 替换数组中的非互质数
解题思路:简单的题目,感觉对不起它的难度标识。栈结构的“消消乐”游戏。注意栈顶和当前元素消除后会产生一个新数字,这个新数字可能产生新的消除。为了清晰,使用了一个手写栈结构,其实这个题目直接vector就行了。__gcd(x,y)是c++提供的函数。class Solution{public: vector<int> replaceNonCoprimes(vector<int>& nums) { int i,st[10000...原创 2022-03-18 11:49:21 · 4139 阅读 · 0 评论 -
力扣 第 284 场周赛 2202. K 次操作后最大化顶端元素
解题思路:简单的题目。贪心+栈特性。唯一一种不可能拿到元素情况就是栈只有一个元素,其k是奇数。如果栈中元素个数少于k,那么一定是所有值中最大值。大于等于k时有两个思路:(1)拿出k-1个,选其中最大放回去(2)拿出k个,栈顶剩下可能是最大值。class Solution {public: int maximumTop(vector<int>& nums, int k) { int i,maxv=0; if(nums.size()...原创 2022-03-18 11:16:53 · 356 阅读 · 0 评论