永发信息网

CCF认证 用java写的 运行错误才得80分,求助!

答案:2  悬赏:60  手机版
解决时间 2021-02-15 22:58
CCF认证 用java写的 运行错误才得80分,求助!
最佳答案
// 改好了,大兵
import java.util.Arrays;
import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        int n=reader.nextInt();
        //长度要符合
        int [] arr=new int[n];
        int temp = 0;
        int min = 0;
        int num=1;
        for(int i=0;i            arr[i]=reader.nextInt();
            }
            reader.close();
            Arrays.sort(arr); 
            // 勿忘独数组
            if(n==1){
                System.out.println(arr[0]);
            }else{
                for(int i=0;i                if(arr[i]!=arr[i+1])
                { 
                    num=1; 
                    
                } if(arr[i]==arr[i+1])
                { num++;
               } 
                 // 判断在两边
                 if(num>temp) 
                { 
                    temp=num; 
                    min=arr[i]; 
                    
                } 
            } 
                System.out.println(min); 
            }
            
    }}


// --------------------------------------------------------
import java.util.*;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] s = new int[n];
        for(int i=0;i            s[i] = sc.nextInt();
        }
        sc.close();
        String tmp = " ,"+Arrays.toString(s).replaceAll("[\[\]\s]","").replaceAll(",",",,")+", ";
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        for(int i=0;i            int si = s[i];
            int num = tmp.split(","+ si + ",").length - 1;
            if(max < num){
                max = num;
                min = si;
            }else if(max == num){
                min = min < si ? min : si;
            }
        }
        System.out.println(min);
    }
}
全部回答
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int [] arr=new int[n+1];
int temp = 0;
int min = 0;
int num = 1;
for(int i=1;i<=n;i++) {
arr[i]=reader.nextInt();
}
reader.close();
Arrays.sort(arr);
for(int i=1;i    if(arr[i]!=arr[i+1]) { num=1; }
    if(arr[i]==arr[i+1]) {
        num++;
        if(num>temp) { temp=num; min=arr[i]; }
    }
        }
        System.out.print(min);
        }
}
我把你的代码这样分了一下,建议题主以后输代码用自带的代码框。
首先,第一个for循环的for头应该写为for(int i = 0; i <= n; i ++)。因为数组索引从0开始,且读入数据共有n+1个,如果按题主这么写的话就会少读一个数。当然一般不写成i<=n而是i<(n+1)。不过这个不太重要。然后第二个循环的for头应该为for(int i=1;i<(n+1);i++)因为共有n+1个数。应该就是错了这两个地方。解法我觉得没啥问题。追问
您好老师,我把您的代码输进去以后,得分还是80
追答稍等,我在机上跑一下试试=~~=追问辛苦你了大神追答
贴一下参考答案(好像是官方的)import java.util.*;
public class Main {
public static void main(String[] args) {
new Main().run();
}
public void run() {
Scanner fin = new Scanner(System.in);
int N = fin.nextInt();
int[] count = new int[10001];
for (int i = 0; i < N; ++i) {
++count[fin.nextInt()];
}
int maxCount = -1;
int result = 0;
for (int i = 1; i <= 10000; ++i) {
if (count[i] > maxCount) {
maxCount = count[i];
result = i;
}
}
System.out.println(result);
}
}
确实有一个问题,数组只有一个数的时候就会有index out of bounds的报错,需要单独考虑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
山西汽车大巴问题:太谷到平遥有没有汽车大巴
有果,逍遥模拟器,怎么设置成一直是竖屏的模
深圳李朗聚星汇城电影院票飞多少钱
印刷面凸出而接受油墨,着墨部分压印于纸上,
同源和老北京布鞋在哪里啊,我有事要去这个地
有谁能告诉我常州的地名来源吗?
美团退款的时候商家会知道买家的信息么
We waited a long time for the train.为什么
三亚希尔顿逸林度假酒店和三亚希尔顿酒店一样
吉祥饸饹面馆地址有知道的么?有点事想过去
java中try{}catch{}语句为什么把定义管道
求fx=x+√2x-1的值域
交通事故,死者办出院手续需要车主去吗?
三湾屋里在哪里啊,我有事要去这个地方
【中华大字典】中华大字典冯国超编共有多少个
推荐资讯
送朋友水晶苹果什么含义?
吻一个美女跟吻一个丑女感觉有什么不同
老公爸爸的姑丈结婚请帖怎么写?
为什么有的长得美的女生就很骄傲,自傲
海盛花园酒店怎么去啊,有知道地址的么
荥阳古时是什么地方
张家圩镇农技站门市我想知道这个在什么地方
木头把件怎样包浆
quo是什么意思,英语哦
让胡路区大庆交通银行24小时自助银行(通银支
有朋友要收购大量的羊肉吗
请问早期心肌病做彩超能看出什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?