360第二题hashset去重JAVA代码

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

public class Main{
public static void main(String []args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int []a=new int[n];

for(int i=0;i<n;i++){
        a[i]=scanner.nextInt();

    }
    int k=scanner.nextInt();
    for(int i=0;i<k;i++){
        HashSet<Integer> hashSet=new HashSet();
        int lo=scanner.nextInt();
        int hi=scanner.nextInt();
        for(int j=lo-1;j<hi;j++){
            hashSet.add(a[j]);
            if(hashSet.size()==m){//一开始没加这个,一直过的57%超时
                break;
            }
        }
        System.out.println(hashSet.size());
        hashSet.clear();

    }


}

}

#题解#
全部评论
python用set直接超时。。。
点赞 回复 分享
发布于 2018-08-27 22:50
楼主这道题a了?
点赞 回复 分享
发布于 2018-08-28 08:40
借楼,贴T2代码。求T3通过代码 package exam360; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int time = sc.nextInt(); int kind = sc.nextInt(); int[][] dp = new int[100+1][time+1]; for(int i=0;i<=kind;i++){ dp[i][0] = 0; } for(int i=1;i<=time;i++){ int kan = sc.nextInt(); for(int j=0;j<101;j++){ if(kan == j){ dp[j][i] = dp[j][i-1]+1; }else { dp[j][i] = dp[j][i-1]; } } } int Q = sc.nextInt(); for(int i=0;i<Q;i++){ int start = sc.nextInt() - 1; int end = sc.nextInt(); int sum = 0; for(int j=1;j<101;j++){ sum += (dp[j][end] > dp[j][start] ? 1 : 0); } System.out.println(sum); } } }
点赞 回复 分享
发布于 2018-08-28 09:03
加了break还是57%。。晕
点赞 回复 分享
发布于 2018-08-28 09:17

相关推荐

实习挂完提前批挂_提前批挂完秋招挂:我是来结束这个秋招的😤
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务