关注
/*采用类似于间接排序的中间置换法思想
1.每次存储i处元素0,i为hole,然后找到i应该存储的元素p,将其移至i,然后p为hole,
然后找到p处应该存储的元素并放入p处。。。知道空洞出应该存储V[i]。
2.移动元素时需要将元素变为负值,防止已经移动的元素再次被移动。
3.接收后将每个元素改为正。
4.复杂度O(N),最多两个元素交换3次,总共最多交换3N/2
*/
//获取i处应该存放的元素下标
int getposition(int i, int n)
{
if(i%2 == 0)
return n - 1 - i / 2;
else
return (i + 1) / 2 - 1;
}
void fun(vector<int> &v)
{
for (int i = 0; i < v.size(); ++i)
{
if(v[i] < 0)
continue;
cout << i << endl;
int p = getposition(i, v.size());
int tmp = -v[i];
int hole, nextHole = p;
for (hole = i; p != i; hole = nextHole)
{
nextHole = p;
v[hole] = -v[p];
p = getposition(p, v.size());
}
v[nextHole] = tmp; //遇见首次腾出位置的元素v[i],将其放入空位
cout << v[i] << endl;
}
for(auto &i : v)
i = -i;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 记录一下这两个月面试以来遇到的手撕题2.2W
- 2... 【双非本】上岸字节后端 | 接单 | 奖学金 | 做自媒体,分享下主包的大学四年 ✨🎓7421
- 3... 💌【520限时活动公告】牛爱网高甜营业!你的恋爱通关秘籍已送达~5946
- 4... 【26届四段大厂】大二字节&腾讯offer 投递技巧保姆级教程4471
- 5... 广州25应届计算机 Java想转行4392
- 6... 真的还有必要继续卷计算机吗?4004
- 7... 腾讯 CSIG 三面 面经 已OC!~3947
- 8... 离开这座让我伤心的城市了💔,希望以后一切顺利吧!#补录# #裁应届生# #捡漏# #minimax#3203
- 9... 差不多还有一周就要去团子实习了,部门自我感觉不是很核心,但是现在比较焦虑。清楚自己是一个八股选手,项目经验几乎是0,比较依赖ai,外卖点评什么的都没敲过,自己的学习能力应该算中等?很害怕进去之后比较push,然后发现我是个水货把我提前开除了,想问问这段时间可以做些什么准备呢?速通一下外卖项目跟着看一遍视频?(有点担心跟着敲一遍时间不够)?2851
- 10... 走啦,上海……2337
正在热议
更多
# 一人一个landing小技巧 #
29863次浏览 566人参与
# 你们公司哪个部门最累? #
10957次浏览 86人参与
# 牛友们的论文几号送审 #
31277次浏览 675人参与
# 这些公司卡简历很严格 #
30229次浏览 149人参与
# 大学最后一个寒假,我想…… #
33645次浏览 375人参与
# 你们公司几号发工资 #
15812次浏览 106人参与
# Tplink求职进展汇总 #
125261次浏览 700人参与
# 国企还是互联网,你怎么选? #
134635次浏览 987人参与
# 工作压力大怎么缓解 #
73305次浏览 914人参与
# 正在实习的你,有转正机会吗? #
372893次浏览 2884人参与
# 写简历别走弯路 #
725354次浏览 7905人参与
# 秋招想进国企该如何准备 #
56097次浏览 359人参与
# bilibili求职进展汇总 #
59371次浏览 580人参与
# 夸夸我的求职搭子 #
187335次浏览 1882人参与
# 查收我的offer竞争力报告 #
178811次浏览 1125人参与
# 牛油的搬砖plog #
36782次浏览 212人参与
# 我在牛爱网找对象 #
182110次浏览 1386人参与
# 520告白墙 #
30291次浏览 425人参与
# 经纬恒润求职进展汇总 #
117119次浏览 1025人参与
# 面试被问第一学历差时该怎么回答 #
124758次浏览 775人参与