diff --git "a/problems/\346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227\357\274\210vector\345\216\237\347\220\206\350\256\262\350\247\243\357\274\211.md" "b/problems/\346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227\357\274\210vector\345\216\237\347\220\206\350\256\262\350\247\243\357\274\211.md" index 70a9a97a19..891c7d1599 100644 --- "a/problems/\346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227\357\274\210vector\345\216\237\347\220\206\350\256\262\350\247\243\357\274\211.md" +++ "b/problems/\346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227\357\274\210vector\345\216\237\347\220\206\350\256\262\350\247\243\357\274\211.md" @@ -172,24 +172,15 @@ public: ```rust // 版本二,使用list(链表) use std::collections::LinkedList; -impl Solution{ - pub fn reconstruct_queue(mut people: Vec>) -> Vec> { +impl Solution { + pub fn reconstruct_queue(people: Vec>) -> Vec> { + let mut people = people; + people.sort_by_key(|b| (-b[0], b[1])); let mut queue = LinkedList::new(); - people.sort_by(|a, b| { - if a[0] == b[0] { - return a[1].cmp(&b[1]); - } - b[0].cmp(&a[0]) - }); - queue.push_back(people[0].clone()); - for v in people.iter().skip(1) { - if queue.len() > v[1] as usize { - let mut back_link = queue.split_off(v[1] as usize); - queue.push_back(v.clone()); - queue.append(&mut back_link); - } else { - queue.push_back(v.clone()); - } + for person in people { + let mut backlink = queue.split_off(person[1] as usize); + queue.push_back(person); + queue.append(&mut backlink); } queue.into_iter().collect() }