File tree Expand file tree Collapse file tree 4 files changed +137
-0
lines changed
solution/0400-0499/0456.132 Pattern Expand file tree Collapse file tree 4 files changed +137
-0
lines changed Original file line number Diff line number Diff line change @@ -99,6 +99,55 @@ class Solution {
99
99
}
100
100
```
101
101
102
+ ### ** TypeScript**
103
+
104
+ ``` ts
105
+ function find132pattern(nums : number []): boolean {
106
+ const n = nums .length ;
107
+ if (n < 3 ) {
108
+ return false ;
109
+ }
110
+ let last = - Infinity ;
111
+ const stack = [];
112
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
113
+ const num = nums [i ];
114
+ if (num < last ) {
115
+ return true ;
116
+ }
117
+ while (stack [stack .length - 1 ] < num ) {
118
+ last = Math .max (last , stack .pop ());
119
+ }
120
+ stack .push (num );
121
+ }
122
+ return false ;
123
+ }
124
+ ```
125
+
126
+ ### ** Rust**
127
+
128
+ ``` rust
129
+ impl Solution {
130
+ pub fn find132pattern (nums : Vec <i32 >) -> bool {
131
+ let n = nums . len ();
132
+ if n < 3 {
133
+ return false ;
134
+ }
135
+ let mut last = i32 :: MIN ;
136
+ let mut stack = vec! [];
137
+ for i in (0 .. n ). rev () {
138
+ if nums [i ] < last {
139
+ return true ;
140
+ }
141
+ while ! stack . is_empty () && stack . last (). unwrap () < & nums [i ] {
142
+ last = stack . pop (). unwrap ();
143
+ }
144
+ stack . push (nums [i ])
145
+ }
146
+ false
147
+ }
148
+ }
149
+ ```
150
+
102
151
### ** ...**
103
152
104
153
```
Original file line number Diff line number Diff line change @@ -85,6 +85,55 @@ class Solution {
85
85
}
86
86
```
87
87
88
+ ### ** TypeScript**
89
+
90
+ ``` ts
91
+ function find132pattern(nums : number []): boolean {
92
+ const n = nums .length ;
93
+ if (n < 3 ) {
94
+ return false ;
95
+ }
96
+ let last = - Infinity ;
97
+ const stack = [];
98
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
99
+ const num = nums [i ];
100
+ if (num < last ) {
101
+ return true ;
102
+ }
103
+ while (stack [stack .length - 1 ] < num ) {
104
+ last = Math .max (last , stack .pop ());
105
+ }
106
+ stack .push (num );
107
+ }
108
+ return false ;
109
+ }
110
+ ```
111
+
112
+ ### ** Rust**
113
+
114
+ ``` rust
115
+ impl Solution {
116
+ pub fn find132pattern (nums : Vec <i32 >) -> bool {
117
+ let n = nums . len ();
118
+ if n < 3 {
119
+ return false ;
120
+ }
121
+ let mut last = i32 :: MIN ;
122
+ let mut stack = vec! [];
123
+ for i in (0 .. n ). rev () {
124
+ if nums [i ] < last {
125
+ return true ;
126
+ }
127
+ while ! stack . is_empty () && stack . last (). unwrap () < & nums [i ] {
128
+ last = stack . pop (). unwrap ();
129
+ }
130
+ stack . push (nums [i ])
131
+ }
132
+ false
133
+ }
134
+ }
135
+ ```
136
+
88
137
### ** ...**
89
138
90
139
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn find132pattern ( nums : Vec < i32 > ) -> bool {
3
+ let n = nums. len ( ) ;
4
+ if n < 3 {
5
+ return false ;
6
+ }
7
+ let mut last = i32:: MIN ;
8
+ let mut stack = vec ! [ ] ;
9
+ for i in ( 0 ..n) . rev ( ) {
10
+ if nums[ i] < last {
11
+ return true ;
12
+ }
13
+ while !stack. is_empty ( ) && stack. last ( ) . unwrap ( ) < & nums[ i] {
14
+ last = stack. pop ( ) . unwrap ( ) ;
15
+ }
16
+ stack. push ( nums[ i] )
17
+ }
18
+ false
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+ function find132pattern ( nums : number [ ] ) : boolean {
2
+ const n = nums . length ;
3
+ if ( n < 3 ) {
4
+ return false ;
5
+ }
6
+ let last = - Infinity ;
7
+ const stack = [ ] ;
8
+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
9
+ const num = nums [ i ] ;
10
+ if ( num < last ) {
11
+ return true ;
12
+ }
13
+ while ( stack [ stack . length - 1 ] < num ) {
14
+ last = Math . max ( last , stack . pop ( ) ) ;
15
+ }
16
+ stack . push ( num ) ;
17
+ }
18
+ return false ;
19
+ }
You can’t perform that action at this time.
0 commit comments