【大厂刷题】2024年 小红书春季笔试真题:小苯的文章浏览


在这里插入图片描述

前言

本人也是练习者,仅提供参考思路和题解。如有不正确的地方,欢迎大家评论指正,大家一起学习进步


题目:小苯的文章浏览

题目描述

小苯是小红书的忠实用户之一。
这天,在“小红书app”发了一篇文章后,收获了若干浏览量。但其中有人浏览了多次,小苯现在想知道所有人第一次浏览的先后顺序,请你帮帮他吧。

输入描述

输入包含n+1行。

第一行一个正整数n(1 <= n <= 105),表示小苯拿到的浏览记录的记录条数。

接下来每行一个字符串s (长度在20)以内,表示id为s的用户此时浏览了一次小苯的文章。

输出描述

输出包含若干行,每行一个字符串s,表示用户的id。按照每个浏览的用户第一次浏览的顺序输出。

输入示例

8
qcjj
benh
qsmcgogo
qcjj
ducksajin
benh
ducksajin
acidlemon

输出示例

qcjj
benh
qsmcgogo
ducksajin
acidlemon

提示信息

共有以上5人点赞,按照第—次点的顺序输出即可。

时间限制:c/c++/go:1s;其他语言:3s。

参考思路

这题总体思路较简单
使用集合(id_set)记录出现的字符,如果字符出现过,则不插入这个集合
如果没有出现过,则插入集合,并插入要输出的答案(result)里面
最后按照顺序输出答案即可

参考题解

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    scanf("%d", &n);
    vector<string> result;
    unordered_set<string> id_set;
    for (int i = 0; i < n; ++i) {
        string id;
        cin >> id;
        if (id_set.count(id)) continue;
        id_set.emplace(id);
        result.emplace_back(id);
    }

    for (const string &it : result) {
        cout << it << '\n';
    }

}

复杂度分析

时间复杂度:O(n)
空间复杂度:O(n|C|), C为常数,即字符串的最大长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__echooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值