From 70d44b7e9ef29435ffe6e47b06a8a98dd24dbdc9 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Mon, 16 Jun 2025 14:35:47 +0800 Subject: [PATCH] 20250616 finished. --- ...difference-between-increasing-elements.cpp | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/problems/2016-maximum-difference-between-increasing-elements.cpp diff --git a/src/problems/2016-maximum-difference-between-increasing-elements.cpp b/src/problems/2016-maximum-difference-between-increasing-elements.cpp new file mode 100644 index 0000000..bc8757a --- /dev/null +++ b/src/problems/2016-maximum-difference-between-increasing-elements.cpp @@ -0,0 +1,49 @@ +/** +* [2016] Maximum Difference Between Increasing Elements + */ +#include +#include +using namespace std; + + +// submission codes start here + +class Solution +{ +public: + int maximumDifference(vector &nums) + { + vector heap; + heap.reserve(nums.size()); + + ranges::make_heap(heap, greater()); + + int result = -1; + for (int i = 1; i < nums.size(); ++i) + { + heap.push_back(nums[i - 1]); + ranges::push_heap(heap, greater()); + + if (heap[0] < nums[i]) + { + result = max(result, nums[i] - heap[0]); + } + } + + return result; + } +}; + +// submission codes end + +TEST(P2016, Test1) +{ + vector nums1 = {7, 1, 5, 4}; + ASSERT_EQ(4, Solution().maximumDifference(nums1)); + + vector nums2 = {9, 4, 3, 2}; + ASSERT_EQ(-1, Solution().maximumDifference(nums2)); + + vector nums3 = {1, 5, 2, 10}; + ASSERT_EQ(9, Solution().maximumDifference(nums3)); +} \ No newline at end of file