C++ 双向链表求解排列中下一个更大元素位置
{"title":"C++ 双向链表求解排列中下一个更大元素位置","description":"本文介绍了使用 C++ 双向链表求解排列中下一个更大元素位置的算法,并提供了完整的代码实现。该算法利用双向链表的特性,能够高效地找到每个元素的下一个更大元素位置。","keywords":"C++, 双向链表, 排列, 下一个更大元素, 算法, 代码实现","content":"#include "iostream"\n\nusing namespace std;\n\nconst int N = 100010;\nint n;\nint L[N], R[N], a[N];\n\nint main() {\n cin >> n;\n for (int i = 1; i <= n; ++i) {\n int x;\n cin >> x;\n a[i] = x; \n }\n\n for (int i = 1; i <= n; ++i) {\n R[i] = i + 1; \n L[i] = i - 1;\n }\n\n for (int i = 1; i <= n; ++i) {\n L[R[a[i]]] = L[a[i]];\n R[L[a[i]]] = R[a[i]];\n }\n\n for (int i = 1; i <= n; ++i) {\n while (R[i] && a[R[i]] <= a[i]) i = R[i];\n cout << R[i] << " ";\n }\n\n cout << endl;\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/quON 著作权归作者所有。请勿转载和采集!