File tree Expand file tree Collapse file tree 4 files changed +145
-0
lines changed
solution/0400-0499/0496.Next Greater Element I Expand file tree Collapse file tree 4 files changed +145
-0
lines changed Original file line number Diff line number Diff line change @@ -178,6 +178,64 @@ func nextGreaterElement(nums1 []int, nums2 []int) []int {
178
178
}
179
179
```
180
180
181
+ ### ** TypeScript**
182
+
183
+ ``` ts
184
+ function nextGreaterElement(nums1 : number [], nums2 : number []): number [] {
185
+ const map = new Map <number , number >();
186
+ const stack: number [] = [Infinity ];
187
+ for (const num of nums2 ) {
188
+ while (num > stack [stack .length - 1 ]) {
189
+ map .set (stack .pop (), num );
190
+ }
191
+ stack .push (num );
192
+ }
193
+ return nums1 .map (num => map .get (num ) || - 1 );
194
+ }
195
+ ```
196
+
197
+ ### ** Rust**
198
+
199
+ ``` rust
200
+ use std :: collections :: HashMap ;
201
+
202
+ impl Solution {
203
+ pub fn next_greater_element (nums1 : Vec <i32 >, nums2 : Vec <i32 >) -> Vec <i32 > {
204
+ let mut map = HashMap :: new ();
205
+ let mut stack = Vec :: new ();
206
+ for num in nums2 {
207
+ while num > * stack . last (). unwrap_or (& i32 :: MAX ) {
208
+ map . insert (stack . pop (). unwrap (), num );
209
+ }
210
+ stack . push (num );
211
+ }
212
+ nums1
213
+ . iter ()
214
+ . map (| n | * map . get (n ). unwrap_or (& - 1 ))
215
+ . collect :: <Vec <i32 >>()
216
+ }
217
+ }
218
+ ```
219
+
220
+ ``` rust
221
+ impl Solution {
222
+ pub fn next_greater_element (nums1 : Vec <i32 >, nums2 : Vec <i32 >) -> Vec <i32 > {
223
+ nums1 . iter (). map (| target | {
224
+ let mut res = - 1 ;
225
+ for num in nums2 . iter (). rev () {
226
+ if num == target {
227
+ break ;
228
+ }
229
+ if num > target {
230
+ res = * num ;
231
+ }
232
+ }
233
+ res
234
+ }). collect :: <Vec <i32 >>()
235
+ }
236
+ }
237
+ ```
238
+
181
239
### ** ...**
182
240
183
241
```
Original file line number Diff line number Diff line change @@ -154,6 +154,64 @@ func nextGreaterElement(nums1 []int, nums2 []int) []int {
154
154
}
155
155
```
156
156
157
+ ### ** TypeScript**
158
+
159
+ ``` ts
160
+ function nextGreaterElement(nums1 : number [], nums2 : number []): number [] {
161
+ const map = new Map <number , number >();
162
+ const stack: number [] = [Infinity ];
163
+ for (const num of nums2 ) {
164
+ while (num > stack [stack .length - 1 ]) {
165
+ map .set (stack .pop (), num );
166
+ }
167
+ stack .push (num );
168
+ }
169
+ return nums1 .map (num => map .get (num ) || - 1 );
170
+ }
171
+ ```
172
+
173
+ ### ** Rust**
174
+
175
+ ``` rust
176
+ use std :: collections :: HashMap ;
177
+
178
+ impl Solution {
179
+ pub fn next_greater_element (nums1 : Vec <i32 >, nums2 : Vec <i32 >) -> Vec <i32 > {
180
+ let mut map = HashMap :: new ();
181
+ let mut stack = Vec :: new ();
182
+ for num in nums2 {
183
+ while num > * stack . last (). unwrap_or (& i32 :: MAX ) {
184
+ map . insert (stack . pop (). unwrap (), num );
185
+ }
186
+ stack . push (num );
187
+ }
188
+ nums1
189
+ . iter ()
190
+ . map (| n | * map . get (n ). unwrap_or (& - 1 ))
191
+ . collect :: <Vec <i32 >>()
192
+ }
193
+ }
194
+ ```
195
+
196
+ ``` rust
197
+ impl Solution {
198
+ pub fn next_greater_element (nums1 : Vec <i32 >, nums2 : Vec <i32 >) -> Vec <i32 > {
199
+ nums1 . iter (). map (| target | {
200
+ let mut res = - 1 ;
201
+ for num in nums2 . iter (). rev () {
202
+ if num == target {
203
+ break ;
204
+ }
205
+ if num > target {
206
+ res = * num ;
207
+ }
208
+ }
209
+ res
210
+ }). collect :: <Vec <i32 >>()
211
+ }
212
+ }
213
+ ```
214
+
157
215
### ** ...**
158
216
159
217
```
Original file line number Diff line number Diff line change
1
+ use std:: collections:: HashMap ;
2
+
3
+ impl Solution {
4
+ pub fn next_greater_element ( nums1 : Vec < i32 > , nums2 : Vec < i32 > ) -> Vec < i32 > {
5
+ let mut map = HashMap :: new ( ) ;
6
+ let mut stack = Vec :: new ( ) ;
7
+ for num in nums2 {
8
+ while num > * stack. last ( ) . unwrap_or ( & i32:: MAX ) {
9
+ map. insert ( stack. pop ( ) . unwrap ( ) , num) ;
10
+ }
11
+ stack. push ( num) ;
12
+ }
13
+ nums1
14
+ . iter ( )
15
+ . map ( |n| * map. get ( n) . unwrap_or ( & -1 ) )
16
+ . collect :: < Vec < i32 > > ( )
17
+ }
18
+ }
Original file line number Diff line number Diff line change
1
+ function nextGreaterElement ( nums1 : number [ ] , nums2 : number [ ] ) : number [ ] {
2
+ const map = new Map < number , number > ( ) ;
3
+ const stack : number [ ] = [ Infinity ] ;
4
+ for ( const num of nums2 ) {
5
+ while ( num > stack [ stack . length - 1 ] ) {
6
+ map . set ( stack . pop ( ) , num ) ;
7
+ }
8
+ stack . push ( num ) ;
9
+ }
10
+ return nums1 . map ( num => map . get ( num ) || - 1 ) ;
11
+ }
You can’t perform that action at this time.
0 commit comments