Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4bd8f3e

Browse files
authored
Update 0496.下一个更大元素I.md 优化 rust
1 parent 49e1ab2 commit 4bd8f3e

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

‎problems/0496.下一个更大元素I.md‎

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -392,25 +392,33 @@ function nextGreaterElement(nums1: number[], nums2: number[]): number[] {
392392
### Rust
393393

394394
```rust
395+
use std::collections::HashMap;
395396
impl Solution {
396397
pub fn next_greater_element(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> {
397-
let mut ans = vec![-1; nums1.len()];
398-
use std::collections::HashMap;
399-
let mut map = HashMap::new();
400-
for (idx, &i) in nums1.iter().enumerate() {
401-
map.insert(i, idx);
398+
let (mut res, mut map) = (vec![-1; nums1.len()], HashMap::new());
399+
if nums1.is_empty() {
400+
return res;
402401
}
402+
403+
nums1.into_iter().enumerate().for_each(|(v, k)| {
404+
map.insert(k, v);
405+
});
406+
403407
let mut stack = vec![];
404-
for (idx, &i) in nums2.iter().enumerate() {
405-
while !stack.is_empty() && nums2[*stack.last().unwrap()] < i {
406-
let pos = stack.pop().unwrap();
407-
if let Some(&jdx) = map.get(&nums2[pos]) {
408-
ans[jdx] = i;
408+
for (i, &value) in nums2.iter().enumerate() {
409+
while let Some(&top) = stack.last() {
410+
if value <= nums2[top] {
411+
break;
412+
}
413+
let stacked_index = stack.pop().unwrap();
414+
if let Some(&mapped_index) = map.get(&nums2[stacked_index]) {
415+
res[mapped_index] = value;
409416
}
410417
}
411-
stack.push(idx);
418+
stack.push(i);
412419
}
413-
ans
420+
421+
res
414422
}
415423
}
416424
```

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /