当前位置:   article > 正文

求一个数组中右边第一个比他大的数(单调栈)_给定数组求出所有数右边第一个比其大的数

给定数组求出所有数右边第一个比其大的数

题意思路如标题

  1. int main()
  2. {
  3. int n;
  4. cin >> n;
  5. int a[MAXN];
  6. for (int i = 0; i < n; ++i) {
  7. cin >> a[i];
  8. }
  9. int dp[MAXN];
  10. int mie[MAXN];
  11. memset(dp, 0, sizeof(dp));
  12. int cnt = n;
  13. mie[cnt] = INT_MAX;
  14. for (int i = n - 1; i >= 0; --i) {
  15. if (cnt <= n && a[i] >= mie[cnt]) cnt++;
  16. dp[i] = mie[cnt];
  17. mie[--cnt] = a[i];
  18. }
  19. for (int i = 0; i < n; ++i)
  20. cout << dp[i] << " ";
  21. return 0;
  22. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/227710
推荐阅读
相关标签
  

闽ICP备14008679号