找出数组中每个数的右边第一个比它大的数
程序员文章站
2024-03-15 19:11:54
...
#include <bits/stdc++.h>
using namespace std;
vector<int> findMax(vector<int>num)
{
if(num.size()==0)return num;
vector<int>res(num.size());
int i=0;
stack<int>s;
while(i<num.size())
{
if(s.empty()||num[s.top()]>=num[i])
{
s.push(i++);
}
else
{
res[s.top()]=num[i];
s.pop();
}
}
while(!s.empty())
{
res[s.top()]=INT_MAX;
s.pop();
}
for(int i=0; i<res.size(); i++)
cout<<res[i]<<endl;
return res;
}
int main()
{
vector<int>p(9);
for(int i=0; i<p.size(); i++)
p[i]=i%3;
findMax(p);
return 0;
}
上一篇: 寻找数组中第K大的数,时间复杂度O(N)
下一篇: 在一个数组中找到几个数之和为某个数字
推荐阅读
-
找出数组中每个数的右边第一个比它大的数
-
找出数组中每个数的右边第一个比它大的数
-
n个整数的无序数组,找到每个元素后面比它大的第一个数
-
找出数组中每个数的右边第一个比它大的数
-
找出数组中第k大的数(时间复杂度分析、C++代码实现). TopK in array. ( leetcode - 215 )
-
单调栈:n个整数的无序数组,要求找到每个元素后面比它大的第一个数,用vector返回,要求时间复杂度为O(N)
-
LeetCode-739:Daily Temperatures (每个元素后面比它大的第一个数)
-
找出数组中第K大的数,时间复杂度O(n)
-
读一个数,判断这个数是否在数组中并找出所在的位置
-
个有序的整形数组,给定一个数,在数组中找出两个数的和等于这个数,并打印其下标