From 3c680b89713b49e3efb19cb350f8bc6d1b91d6a3 Mon Sep 17 00:00:00 2001 From: juan Date: Wed, 27 Jul 2022 11:05:36 +0800 Subject: [PATCH] vault backup: 2022-07-27 11:05:36 --- .../pages/Leetcode Next-Greater-Element-I.md | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 OJ notes/pages/Leetcode Next-Greater-Element-I.md diff --git a/OJ notes/pages/Leetcode Next-Greater-Element-I.md b/OJ notes/pages/Leetcode Next-Greater-Element-I.md new file mode 100644 index 0000000..1c62aca --- /dev/null +++ b/OJ notes/pages/Leetcode Next-Greater-Element-I.md @@ -0,0 +1,71 @@ +# Leetcode Next-Greater-Element-I + +#### 2022-07-27 10:55 + +> ##### Data structures: +> #DS #stack #hash_table +> ##### Difficulty: +> #coding_problem #difficulty-easy +> ##### Additional tags: +> #leetcode +> ##### Revisions: +> N/A + +##### Related topics: +```expander +tag:#stack +``` + + + +##### Links: +- [Link to problem](https://leetcode.com/problems/next-greater-element-i/) +___ +### Problem + +The **next greater element** of some element `x` in an array is the **first greater** element that is **to the right** of `x` in the same array. + +You are given two **distinct 0-indexed** integer arrays `nums1` and `nums2`, where `nums1` is a subset of `nums2`. + +For each `0 <= i < nums1.length`, find the index `j` such that `nums1[i] == nums2[j]` and determine the **next greater element** of `nums2[j]` in `nums2`. If there is no next greater element, then the answer for this query is `-1`. + +Return _an array_ `ans` _of length_ `nums1.length` _such that_ `ans[i]` _is the **next greater element** as described above._ + +#### Examples + +**Example 1:** + +**Input:** nums1 = [4,1,2], nums2 = [1,3,4,2] +**Output:** [-1,3,-1] +**Explanation:** The next greater element for each value of nums1 is as follows: +- 4 is underlined in nums2 = [1,3,4,2]. There is no next greater element, so the answer is -1. +- 1 is underlined in nums2 = [1,3,4,2]. The next greater element is 3. +- 2 is underlined in nums2 = [1,3,4,2]. There is no next greater element, so the answer is -1. + +**Example 2:** + +**Input:** nums1 = [2,4], nums2 = [1,2,3,4] +**Output:** [3,-1] +**Explanation:** The next greater element for each value of nums1 is as follows: +- 2 is underlined in nums2 = [1,2,3,4]. The next greater element is 3. +- 4 is underlined in nums2 = [1,2,3,4]. There is no next greater element, so the answer is -1. + +#### Constraints + +### Thoughts + +> [!summary] +> This is a problem using the traits of #stack. + +This problem can be divided into two sub-problems: + +- given a subset number, return its location in the parent set -> hash table +- given a array, return the next greater element in the array after it -> stack + +#### How is the stack used? + +Stack is FILO, which means, when iterating from the last element, if you push a number greater into it, it will be used last, ideal for finding the **next** biggest one. + +### Solution + +```cpp \ No newline at end of file