关注
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int findleftmaxnum(vector<int> &nums,int l,int r)
{
int maxnum = nums[l];
for(int i=l;i<r;i++)
{
maxnum = maxnum<nums[i]?nums[i]:maxnum;
}
return maxnum;
}
int findrightindex(vector<int> &nums,int maxnum, int l)
{
int index = l;
for(int i = nums.size()-1;i>l;i--)
{
if(nums[i]<maxnum)
return i;
}
return l;
}
//10
//69079936 236011312 77957850 653604087 443890802 277126428 755625552 768751840 993860213 882053548
int main()
{
int n = 0;
cin>>n;
vector<int > nums,numa;
unordered_map<int, int> mp;
for(int i=0;i<n;i++)
{
int temp = 0;
cin>>temp;
nums.push_back(temp);
numa.push_back(temp);
mp[temp] = i;
}
sort(nums.begin(),nums.end());//排序用于定位当前区间的最小值
int count = 0;
for(int i=0;i<nums.size();i++)
{
int temp = nums[i];
int index = mp[temp];
int maxnum = findleftmaxnum(numa,i,index);//找到当前区间的最小值左侧的最大值元素的值
int right =findrightindex(numa,maxnum,index);//从当前区间的最右侧开始 找到第一个小于上一步找到的最大值的值
i = right;//划分区间
count++;
}
cout<<count<<endl;
return 1;
}
//12 18 14 11 15 6 7 14 20 6 19 20 23 22
//2 1 3 2 4 3 5 3 6 5 7 6 7 答题的时候A了18,后来发现判断条件的时候多了个等号,去掉后感觉能提高不少,思路类似快排,只不过每次先找当前区间的最小值,然后找最小值左侧的最大值,判断这个最小值和最大值确定的区间能覆盖的范围,该范围就是一个满足要求的区间,然后再进行后面区间的partition。 C++代码。
查看原帖
点赞 评论
相关推荐
02-02 10:44
齐齐哈尔大学 Java 点赞 评论 收藏
分享
01-14 17:06
哈尔滨工程大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
12557次浏览 171人参与
# 你的mentor是什么样的人? #
51191次浏览 723人参与
# 程序员找工作至少要刷多少题? #
21426次浏览 276人参与
# 我和mentor的爱恨情仇 #
106322次浏览 950人参与
# 论秋招对个人心气的改变 #
13652次浏览 192人参与
# 机械人避雷的岗位/公司 #
44222次浏览 311人参与
# 为了减少AI幻觉,你注入过哪些设定? #
6183次浏览 185人参与
# 秋招落幕,你是He or Be #
54262次浏览 618人参与
# 校招第一份工作你干了多久? #
136667次浏览 597人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
47423次浏览 291人参与
# 设计人如何选offer #
189739次浏览 868人参与
# 考公VS就业,你怎么选? #
91998次浏览 507人参与
# 职场上哪些行为很加分? #
322628次浏览 3603人参与
# 你的秋招进行到哪一步了 #
2531151次浏览 23253人参与
# 牛客AI体验站 #
7884次浏览 212人参与
# 机械人还在等华为开奖吗? #
312198次浏览 1582人参与
# 秋招投递记录 #
380971次浏览 3204人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2337次浏览 52人参与
# 我现在比当时_,你想录用我吗 #
9514次浏览 129人参与
# 重来一次,我还会选择这个专业吗 #
411333次浏览 3898人参与

