CCF认证 用java写的 运行错误才得80分,求助!
答案:2 悬赏:60 手机版
解决时间 2021-02-15 22:58
- 提问者网友:箛茗
- 2021-02-15 17:01
CCF认证 用java写的 运行错误才得80分,求助!
最佳答案
- 五星知识达人网友:山君与见山
- 2021-02-15 18:17
// 改好了,大兵
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;
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
}
reader.close();
Arrays.sort(arr);
// 勿忘独数组
if(n==1){
System.out.println(arr[0]);
}else{
for(int i=0;i
{
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
}
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 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);
}
}
全部回答
- 1楼网友:风格不统一
- 2021-02-15 18:53
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的报错,需要单独考虑
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++;
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的报错,需要单独考虑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯