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 0bbe229

Browse files
Merge pull request youngyangyang04#2241 from fwqaaq/master-2
Update 0496.下一个更大元素I.md 优化 rust
2 parents 1f496c7 + 4bd8f3e commit 0bbe229

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
@@ -396,25 +396,33 @@ function nextGreaterElement(nums1: number[], nums2: number[]): number[] {
396396
### Rust
397397

398398
```rust
399+
use std::collections::HashMap;
399400
impl Solution {
400401
pub fn next_greater_element(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> {
401-
let mut ans = vec![-1; nums1.len()];
402-
use std::collections::HashMap;
403-
let mut map = HashMap::new();
404-
for (idx, &i) in nums1.iter().enumerate() {
405-
map.insert(i, idx);
402+
let (mut res, mut map) = (vec![-1; nums1.len()], HashMap::new());
403+
if nums1.is_empty() {
404+
return res;
406405
}
406+
407+
nums1.into_iter().enumerate().for_each(|(v, k)| {
408+
map.insert(k, v);
409+
});
410+
407411
let mut stack = vec![];
408-
for (idx, &i) in nums2.iter().enumerate() {
409-
while !stack.is_empty() && nums2[*stack.last().unwrap()] < i {
410-
let pos = stack.pop().unwrap();
411-
if let Some(&jdx) = map.get(&nums2[pos]) {
412-
ans[jdx] = i;
412+
for (i, &value) in nums2.iter().enumerate() {
413+
while let Some(&top) = stack.last() {
414+
if value <= nums2[top] {
415+
break;
416+
}
417+
let stacked_index = stack.pop().unwrap();
418+
if let Some(&mapped_index) = map.get(&nums2[stacked_index]) {
419+
res[mapped_index] = value;
413420
}
414421
}
415-
stack.push(idx);
422+
stack.push(i);
416423
}
417-
ans
424+
425+
res
418426
}
419427
}
420428
```

0 commit comments

Comments
(0)

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