Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit fea41a6

Browse files
solves next greater element I
1 parent 620284a commit fea41a6

File tree

3 files changed

+66
-4
lines changed

3 files changed

+66
-4
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Leetcode Algorithms
22

3-
![problems-solved](https://img.shields.io/badge/Problems%20Solved-105/1412-1f425f.svg)
4-
![problems-solved-java](https://img.shields.io/badge/Java-99/1412-1abc9c.svg)
3+
![problems-solved](https://img.shields.io/badge/Problems%20Solved-106/1412-1f425f.svg)
4+
![problems-solved-java](https://img.shields.io/badge/Java-106/1412-1abc9c.svg)
55
![problems-solved-python](https://img.shields.io/badge/Python-16/1412-1abc9c.svg)
66
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
77

@@ -127,8 +127,8 @@
127127
| 476 | [Number Complement](https://leetcode.com/problems/number-complement) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NumberComplement.java) |
128128
| 482 | [License Key Formatting](https://leetcode.com/problems/license-key-formatting) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/LicenseKeyFormatting.java) |
129129
| 485 | [Max Consecutive Ones](https://leetcode.com/problems/max-consecutive-ones) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/MaxConsecutiveOnes.java) |
130-
| 492 | [Construct the Rectangle](https://leetcode.com/problems/construct-the-rectangle) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/ConstructTheRectangle.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/construct_the_rectangle.py)|
131-
| 496 | [Next Greater Element I](https://leetcode.com/problems/next-greater-element-i) | Easy | |
130+
| 492 | [Construct the Rectangle](https://leetcode.com/problems/construct-the-rectangle) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/ConstructTheRectangle.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/construct_the_rectangle.py) |
131+
| 496 | [Next Greater Element I](https://leetcode.com/problems/next-greater-element-i) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NextGreaterElementI.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/next_greater_element_i.py) |
132132
| 500 | [Keyboard Row](https://leetcode.com/problems/keyboard-row) | Easy | |
133133
| 501 | [Find Mode in Binary Search Tree](https://leetcode.com/problems/find-mode-in-binary-search-tree) | Easy | |
134134
| 504 | [Base 7](https://leetcode.com/problems/base-7) | Easy | |

python/next_greater_element_i.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from typing import List, Dict
2+
3+
4+
class Solution:
5+
def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
6+
next_greater_map = self.get_next_greater_elements(nums2)
7+
result = []
8+
for element in nums1:
9+
result.append(next_greater_map[element])
10+
return result
11+
12+
def get_next_greater_elements(self, array: List[int]) -> Dict[int, int]:
13+
stack = []
14+
result = {}
15+
for element in array:
16+
while len(stack) != 0 and element > stack[-1]:
17+
result[stack.pop()] = element
18+
stack.append(element)
19+
20+
while len(stack) !=0:
21+
result[stack.pop()] = -1
22+
23+
return result

src/NextGreaterElementI.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.Arrays;
2+
import java.util.HashMap;
3+
import java.util.Map;
4+
import java.util.Stack;
5+
6+
public class NextGreaterElementI {
7+
public static int[] nextGreaterElement(int[] nums1, int[] nums2) {
8+
Map<Integer, Integer> nextGreatestElement = getNextGreaterElementsFor(nums2);
9+
int[] result = new int[nums1.length];
10+
for (int index = 0 ; index < nums1.length ; index++) {
11+
result[index] = nextGreatestElement.get(nums1[index]);
12+
}
13+
return result;
14+
}
15+
16+
private static Map<Integer, Integer> getNextGreaterElementsFor(int[] array) {
17+
Map<Integer, Integer> result = new HashMap<>();
18+
Stack<Integer> stack = new Stack<>();
19+
20+
for (int element : array) {
21+
while (!stack.isEmpty() && element > stack.peek()) {
22+
result.put(stack.peek(), element);
23+
stack.pop();
24+
}
25+
stack.push(element);
26+
}
27+
28+
while (!stack.isEmpty()) {
29+
result.put(stack.pop(), -1);
30+
}
31+
32+
return result;
33+
}
34+
35+
public static void main(String[] args) {
36+
int[] result = nextGreaterElement(new int[] {4, 1, 2}, new int[] {1, 3, 4, 2});
37+
System.out.println(Arrays.toString(result));
38+
}
39+
}

0 commit comments

Comments
 (0)