前言
本次题目难度中等,最后一题需要一些技巧。 第一题是哈希表模拟,打卡题。 第二题动态规划,非常明显,难度也不大。 第三题是二分答案,但是里面隐含的贪心思想笔记隐晦,有一定的难度。
第一题 小苯的文章浏览
小苯是小红书的忠实用户之一。
这天,在“小红书app”发了一篇文章后,收获了若干浏览量。但其中有人浏览了多次,小苯现在想知道所有人第一次浏览的先后顺序,请你帮帮他吧。
输入描述:
输入包含n+1行。
第一行一个正整数n(),表示小苯拿到的浏览记录的记录条数。
接下来每行一个字符串s (长度在20)以内,表示id为s的用户此时浏览了一次小苯的文章。
输出描述:输出包含若干行,每行一个字符串s,表示用户的id。按照每个浏览的用户第一次浏览的顺序输出。
样例输入:
8
qcjj
benh
qsmcgogo
qcjj
ducksajin
benh
ducksajin
acidlemon
样例输出:
qcjj
benh
qsmcgogo
ducksajin
acidlemon
提示: 共有以上5人点赞,按照第—次点的顺序输出即可。
思路与代码:
public static ArrayList<String> Search(){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<String> arrayList = new ArrayList<>();
while(sc.hasNext()){ // 按CTRL+D结束输入
String s = sc.nextLine();
if(!arrayList.contains(s)) // 输入去重,仅将第一次出现的输入放入list
arrayList.add(s);
}
for(String s:arrayList){
System.out.println(s); //遍历输出即可
}
return arrayList;
}