From 4928246bfb99672c7f874a7b66cc3ef8cb02a3b2 Mon Sep 17 00:00:00 2001 From: Daniel Ghenov <47058577+Daniel-Ghenov@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:59:13 +0200 Subject: Update Task 01.cpp --- Practicum/pract06/solutions/Task 01.cpp | 40 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 21 deletions(-) (limited to 'Practicum/pract06/solutions/Task 01.cpp') diff --git a/Practicum/pract06/solutions/Task 01.cpp b/Practicum/pract06/solutions/Task 01.cpp index 738b769..9ddd5e8 100644 --- a/Practicum/pract06/solutions/Task 01.cpp +++ b/Practicum/pract06/solutions/Task 01.cpp @@ -1,35 +1,33 @@ -#include +#include #include class Solution { public: - bool isValid(std::string s) + std::vector nextGreaterElements(std::vector &nums) { - std::stack open; - - for (char ch : s) + std::stack> stack; + std::vector ans(nums.size(), -1); + for (int i = 0; i < nums.size(); ++i) { - if (ch == '(' || ch == '{' || ch == '[') + while (!stack.empty() && stack.top().first < nums[i]) { - open.push(ch); + ans[stack.top().second] = nums[i]; + stack.pop(); } - else - { - if (open.empty()) - return false; - if ((open.top() == '(' && ch == ')') || - (open.top() == '{' && ch == '}') || - (open.top() == '[' && ch == ']')) - { - open.pop(); - continue; - } - return false; + stack.emplace(nums[i], i); + } + + for (int i = 0; i < nums.size(); ++i) + { + while (!stack.empty() && stack.top().first < nums[i]) + { + ans[stack.top().second] = nums[i]; + stack.pop(); } } - return open.empty(); + return ans; } -}; \ No newline at end of file +}; -- cgit v1.3.1-23-gd82d