Skip to content

Commit fb88c46

Browse files
committed
feat: add solutions to lc problem: No.0456
No.0456.132 Pattern
1 parent 6e09284 commit fb88c46

File tree

4 files changed

+137
-0
lines changed

4 files changed

+137
-0
lines changed

solution/0400-0499/0456.132 Pattern/README.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,55 @@ class Solution {
9999
}
100100
```
101101

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+
102151
### **...**
103152

104153
```

solution/0400-0499/0456.132 Pattern/README_EN.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,55 @@ class Solution {
8585
}
8686
```
8787

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+
88137
### **...**
89138

90139
```
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
}

0 commit comments

Comments
 (0)