数组离散化处理,本质哈希

vector get(const vector& arr) 
{
vector tmp = arr; 
sort(tmp.begin(), tmp.end()); 
tmp.erase(unique(tmp.begin(), tmp.end()), tmp.end()); 
unordered_map mp;for (int i = 0; i < tmp.size(); i + ) 
{
mp[tmp[i]] = i; 
}
vector res(arr.size()); 
for (int i = 0; i < arr.size(); i + ) 
{
res[i] = mp[arr[i]]; 
}
return res; 
}
适合用于数据很少,但是数值很大,且不涉及数值计算的题目
全部评论

相关推荐

面经:1.&nbsp;多线程打印整数2.链表合并3.写一个生产者消费者模型:思路&nbsp;wait()&nbsp;和&nbsp;notify()&nbsp;方法来实现4.sql题:求和&nbsp;排序&nbsp;分页2024.6.20一面项目拷打。之前做的没什么难度,问项目难点,说了我觉得是难点的东西,但是其实解决了也没有多难,但是还是要说八股文:Java的异常体系为什么要有异常finally(这个面试官追问,你确定他会不管怎么样都会执行吗?为什么)深拷贝浅拷贝深拷贝的应用场景数据库索引索引的数据结构什么数据库用了哈希索引mysql数据库的索引结构B树的特点索引失效的场景git的常用指令git&nbsp;mergelinux:查询cpu利用率最高的进程linux:查询日志中的关键字代码讲解第一个没看懂第二个:流式编程菜鸟集团丨2025届校招官方内推启动【公司介绍】菜鸟孵化于阿里巴巴全球最大的行业电子商务生态系统中,现已成为电商物流的全球领导者,全球第一的跨境电商物流公司【岗位方向】研发类、算法类、产品类、数据类、物流类、运营类、市场拓展类、职能类【工作地点】杭州为主,深圳、香港、北京也开放需求;区域物流岗(物流园区办公):东莞、珠海、厦门、漳州、杭州、威海【内推渠道】https://jsj.top/f/fjZDnI【内推码】CN003【备注】内推码在「校园大使内推人」栏填写,欢迎私戳跟简历进度哦~填写此链米哈游接后,同学会在近期收到一封内推确认邮件,通过邮件确认后才算内推成功、才能进入菜鸟校招流程❗️投递的UU留下姓名缩写和岗位~我会跟进~
菜鸟集团
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
11-26 21:54
哈尔滨理工大学
1.dijkstra(无法求负边)#includeusing&nbsp;namespace&nbsp;std;#define&nbsp;endl&nbsp;'\n'const&nbsp;int&nbsp;N&nbsp;=&nbsp;3e5;int&nbsp;n,&nbsp;m,&nbsp;s,&nbsp;t;vector >&nbsp;g[N];int&nbsp;dis[N];int&nbsp;st[N];void&nbsp;dij()&nbsp;{memset(dis,0x3f,sizeof(dis));priority_queue,vector>,greater>>&nbsp;pq;pq.push({0,s});while&nbsp;(pq.size()){int&nbsp;&nbsp;d&nbsp;=&nbsp;pq.top().first;int&nbsp;&nbsp;u&nbsp;=&nbsp;pq.top().second;pq.pop();if&nbsp;(st[u])continue;st[u]&nbsp;=&nbsp;1;for&nbsp;(auto&nbsp;i&nbsp;:&nbsp;g[u]){int&nbsp;v&nbsp;=&nbsp;i.first;int&nbsp;w&nbsp;=&nbsp;i.second;if (dis[v] >&nbsp;d&nbsp;+&nbsp;w){dis[v]&nbsp;=&nbsp;d&nbsp;+&nbsp;w;pq.push({dis[v],v});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}}cout }signed&nbsp;main(){std::ios::sync_with_stdio(false);cin.tie(0);&nbsp;cout.tie(0);cin >> n >> m >> s >>&nbsp;t;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;i&nbsp;{int&nbsp;u,&nbsp;v,&nbsp;w;cin >> u >> v >>&nbsp;w;g[u].push_back({v,w});g[v].push_back({u,w});}dij();return&nbsp;&nbsp;0;}2.贝尔特佛特(可以求负边)int&nbsp;n,&nbsp;m;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;n表示点数,m表示边数int&nbsp;dist[N];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;dist[x]存储1到x的最短路距离struct&nbsp;Edge&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;边,a表示出点,b表示入点,w表示边的权重{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a,&nbsp;b,&nbsp;w;}edges[M];//&nbsp;求1到n的最短路距离,如果无法从1走到n,则返回-1。int&nbsp;bellman_ford(){&nbsp;&nbsp;&nbsp;&nbsp;memset(dist,&nbsp;0x3f,&nbsp;sizeof&nbsp;dist);&nbsp;&nbsp;&nbsp;&nbsp;dist[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果第n次迭代仍然会松弛三角不等式,就说明存在一条长度是n+1的最短路径,由抽屉原理,路径中至少存在两个相同的点,说明图中存在负权回路。&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a&nbsp;=&nbsp;edges[j].a,&nbsp;b&nbsp;=&nbsp;edges[j].b,&nbsp;w&nbsp;=&nbsp;edges[j].w; if (dist[b] >&nbsp;dist[a]&nbsp;+&nbsp;w)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dist[b]&nbsp;=&nbsp;dist[a]&nbsp;+&nbsp;w;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;} if (dist[n] >&nbsp;0x3f3f3f3f&nbsp;/&nbsp;2)&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dist[n];}3.Floyd(dp思想)for&nbsp;(k&nbsp;=&nbsp;1;&nbsp;k&nbsp;&nbsp;&nbsp;for&nbsp;(x&nbsp;=&nbsp;1;&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(y&nbsp;=&nbsp;1;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[x][y]&nbsp;=&nbsp;min(f[x][y],&nbsp;f[x][k]&nbsp;+&nbsp;f[k][y]);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}}上述算法,dijkstra时间复杂度最低,Floyd最好n的三次方,但是可以求图上连通点之间的最短距离
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务