题解 | #合并表记录#

合并表记录

http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

两种垃圾写法:

  1. 先用HashMap合并,再用Vec排序,哈哈哈,好顺手,就是写的多。
use std::io::{self, *};
use std::str::FromStr;
use std::collections::HashMap;
use std::cmp::Ordering;

fn main(){
    let stdin = io::stdin();
    let mut n = 0usize;
    let mut map : HashMap<i32,i32>= HashMap::new();
    let mut index = 0i32;
    let mut value = 0i32;
    
    for line in stdin.lock().lines(){
        let ll = line.unwrap();//String
        if n == 0 {
            n = usize::from_str(ll.as_str()).unwrap();
        }else{
            let numbers: Vec<&str> = ll.split(" ").collect();
            index = numbers[0].trim().parse::<i32>().unwrap_or(0);
            value = numbers[1].trim().parse::<i32>().unwrap_or(0);
            value = match map.get(&index) {
                None => value,
                Some(&old) => value + old,
            };
            map.insert(index, value);
        }
    }
    let mut v : Vec<(i32,i32)> = vec![];
    
    for (key, val) in map.iter() {
        v.push((*key,*val));
    }
    v.sort_by(|(a,c),(b,d)| a.cmp(&b));
    for (key, val) in v.iter() {
        println!("{} {}",key,val);
    }
}
  1. 无脑Vec:插入之后排序再 remove()
use std::io::{self, *};
use std::str::FromStr;
use std::cmp::Ordering;

fn main(){
    let stdin = io::stdin();
    let mut n = 0usize;
    let mut index = 0i32;
    let mut value = 0i32;
    let mut v : Vec<(i32,i32)> = vec![];
    
    for line in stdin.lock().lines(){
        let ll = line.unwrap();//String
        if n == 0 {
            n= 1;
        }else{
            let numbers: Vec<&str> = ll.split(" ").collect();
            index = numbers[0].trim().parse::<i32>().unwrap_or(0);
            value = numbers[1].trim().parse::<i32>().unwrap_or(0);
            v.push((index,value));
        }
    }
    v.sort_by(|(a,c),(b,d)| a.cmp(&b));
    for i in (1..v.len()).rev(){
        if v[i].0 == v[i-1].0 {
            v[i-1].1 += v[i].1;
            v.remove(i);
        }
    }
    for (key, val) in v.iter() {
        println!("{} {}",key,val);
    }
}

我属实拉胯!

用 Rust 刷华为机试HJ 文章被收录于专栏

用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂

全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-20 17:22

相关推荐

葬爱~冷少:我当时都是上午刷力扣,下午背八股,有活给我先别急,没活就干自己的事情
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务