#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; }
相关文章
- 排序算法-插入排序-初始状态: 将数组分为已排序部分和未排序部分。初始时,已排序部分只包含第一个元素,而未排序部分包含其余的元素。逐步构建有序序列: 从未排序部分取出第一个元素,将其插入到已排序部分的正确位置,使得已排序部分仍然保持有序。比较并移动: 将取出的元素与已排序部分的元素逐一比较,找到其正确的插入位置。为了插入,可能需要将比它大的元素依次向右移动,为新元素腾出插入的位置。重复步骤 2-3: 重复以上步骤,每次取出未排序部分的一个元素,插入到已排序部分的正确位置。这样,已排序部分逐渐增加,未排序部分逐渐减小。直到排序完成: 重复上述过程,直到未排序部分为空,整个数组就被排序完成了。 插入排序代码
- C#在数组中找出现次数最多的一个数
- 从数组中找出乘积最大的三个数
- 找出无序数组中的最小的k个数(利用大根堆)
- java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素
- 【剑指offer】找出数组中只出现一次的2个数,其他数都是成对出现(出现一次的三个数)
- 在O(logn)时间内找到数组中离每个数最近而又比它大的数的下标
- LeetCode 136 Single Number 数组中除一个数外其他数都出现两次,找出只出现一次的数
- 找出数组中只出现一次的2个数
- java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素