Re: [闲聊] 每日leetcode

楼主: yam276 ('_')   2024-06-11 15:29:57
※ 引述《sustainer123 (caster )》之铭言:
: https://leetcode.com/problems/relative-sort-array
: 1122. Relative Sort Array
: 给定两数列arr1与arr2 arr2的元素不重复且皆存在于arr1
: 请依照arr2的顺序排列arr1的元素
: 假设有元素不在arr2 请递增排序
思路:
先用HashMap整理次数
照arr2出现顺序放进result vec
然后选剩的孩子们sort后放后面
太苦了 不被需要的粉丝
Code:
use std::collections::HashMap;
impl Solution {
pub fn relative_sort_array(arr1: Vec<i32>, mut arr2: Vec<i32>) -> Vec<i32>
{
let mut arr1_hash = HashMap::new();
for &num in &arr1 {
*arr1_hash.entry(num).or_insert(0)+=1;
}
let mut result = Vec::new();
for &num in &arr2 {
if let Some(&count) = arr1_hash.get(&num){
for _ in 0..count {
result.push(num);
}
arr1_hash.remove(&num);
}
}
let mut rest_arr1 = Vec::new();
for (&num, &count) in &arr1_hash {
for _ in 0..count {
rest_arr1.push(num);
}
}
rest_arr1.sort();
result.extend(rest_arr1);
result
}
}
作者: SecondRun (雨夜琴声)   2024-06-11 15:33:00
大师
楼主: yam276 ('_')   2024-06-11 15:35:00
感觉我脱裤子放屁 我哭了

Links booklink

Contact Us: admin [ a t ] ucptt.com