您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 1浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

遍历Map要选择好的遍历方式(洛谷P1097题题解,Java语言描述)

星拱北辰 发布时间:2020-01-24 23:13:47 ,浏览量:1

题目要求

P1097题目连接 在这里插入图片描述 在这里插入图片描述

分析

这题标签里有一个“高性能”,瞬间令我心惊胆战,毕竟Java嘛。

我们应该会写排序,比如快排,但可以利用现成的数据结构啊,本来想的是TreeSet,后来觉得反而还需要包装一个类,不划算,不若来个TreeMap,Key是Integer类型的Number,Value是Integer类型的Counter。 如果不在TreeMap里就插入,counter置默认1;如果在就counter+1。

最后可直接输出,很是便捷。

但说着说着高性能嘛,果然TLE了一个,测试数据9我就不Share了,毕竟太长了,没法放在博客里,感兴趣去我的Github看吧~~ 也可以自己去洛谷TLE一次哈哈哈 ~~

问题就是Map的遍历问题,HashMap的话我还是了解的,但TreeMap其实和HashMap挺不一样的,我就默认按照遍历key,获取value的方式进行(这样其实不好)。 最终,改为获取迭代器,毕竟可能会更高效一些,终于涉险过关。

有关于各种遍历方式的效率差别,以后可能会专门拿出来说说,这里就不加以赘述,希望感兴趣的读者自己多加比对,这种积累可能在一些小的性能瓶颈能帮到你。

第二次提交怕超时,删了scanner.close(),不知可有微薄影响,反正过了总是开心的嘛~~

第一次提交——TLE

在这里插入图片描述

import java.util.Scanner;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        TreeMap map = new TreeMap();
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        for (int i = 0; i             
关注
打赏
1660750074
查看更多评论
0.0452s