Skip to content

Commit b7975c3

Browse files
committed
A new solution for question "next greater element I".
1 parent 42681ba commit b7975c3

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

Easy/496.Next Greater Element I.playground/Contents.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,38 @@
3333
*/
3434
class Solution {
3535
func nextGreaterElement(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
36+
var keyToIndexMap = [Int: Int]()
37+
var indexToKeyMap = [Int: Int]()
38+
for (i, e) in nums2.enumerated() {
39+
keyToIndexMap[e] = i
40+
indexToKeyMap[i] = e
41+
}
42+
43+
var res = [Int]()
44+
for e in nums1 {
45+
let index = keyToIndexMap[e]!
46+
if index == nums2.count - 1 {
47+
res.append(-1)
48+
} else {
49+
var found = false
50+
for i in (index + 1)..<nums2.count {
51+
let nextGreaterElement = indexToKeyMap[i]!
52+
if nextGreaterElement > e {
53+
res.append(nextGreaterElement)
54+
found = true
55+
break
56+
}
57+
}
58+
if !found {
59+
res.append(-1)
60+
}
61+
}
62+
}
63+
return res
64+
}
65+
66+
67+
func nextGreaterElement2(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
3668
var n = nums2
3769
var stack = [n.remove(at: 0)]
3870
var map = [Int: Int]()

0 commit comments

Comments
 (0)