数珠子颜色

图片说明

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int a[] = new int[n];
        for(int i = 0;i < n;i++){
            a[i] = sc.nextInt();
        }
        long sum = 0;
        for(int i = 0;i < n;i++){
            HashSet<Integer> map = new HashSet<Integer>();
            sum++;
            int now = 1;
            map.add(a[i]);
            for(int j = i + 1;j < n;j++){
                if(!map.contains(a[j])){
                    now++;
                    map.add(a[j]);
                }
                sum+=now;
            }
        }
        System.out.println(sum);


    }

}



这里用了一个新方法,hashset,具体也是跟hashmap差不多的,就是在遍历中,每一次新遍历都要重置一次map,这样才能准确知道有没有重复的颜色,然后呢每一次开始,单独的一个珠子就算作一个区间,然后另一方面值得注意的是,不管重复不重复,小循环每次都要加上now的次数,因为如果有相同的话就直接加上了,不用再循环一次搞得太麻烦

全部评论

相关推荐

10-15 20:01
已编辑
上海大学 Java
钉钉什么垃圾公司,约面鸽人
Syca_:途虎养车给我定了我这边早上六点的笔试,睡了四个小时起来难受的要命,告诉我面试时间是两天后的凌晨四点
点赞 评论 收藏
分享
09-17 10:53
四川大学 C++
牛客91242815...:会写标书没有任何卵用,鉴定为横向垃圾导师的受害者
点赞 评论 收藏
分享
酷酷的喜马拉雅山:感觉这比一直在初筛不动的好多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务