如何计算Java中可能具有相同计数的重复次数最多的值
我已经输入了这个值如何计算Java中可能具有相同计数的重复次数最多的值,java,arrays,performance,counting,Java,Arrays,Performance,Counting,我已经输入了这个值 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String lines = br.readLine(); String[] strs = lines.trim().split(""); int x = 0; int[] numbers = new int[strs.length]; for (int i = 0; i <
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String lines = br.readLine();
String[] strs = lines.trim().split("");
int x = 0;
int[] numbers = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
numbers[i] = Integer.parseInt(strs[i]);
}
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串行=br.readLine();
字符串[]strs=lines.trim().split(“”);
int x=0;
int[]数字=新的int[strs.length];
对于(int i=0;i
我已经把它分类了
int temp = 0;
for (int i=0; i < numbers.length; ++i) {
for (int j=1; j < (numbers.length - i); ++j) {
if (numbers[j-1] > numbers[j]) {
temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}
int-temp=0;
对于(int i=0;i数字[j]){
温度=数字[j-1];
数字[j-1]=数字[j];
数字[j]=温度;
}
}
}
问题就在这里
int numDup = 0, dupCount = 1, maxCount = 0;
int previous = -1;
for (int i=0; i < numbers.length; ++i) {
if (numbers[i] == previous) {
++numDup;
if(maxCount < numDup){
maxCount = numDup;
dupCount = 1;
}
else {
dupCount += 1;
}
}
else {
previous = numbers[i];
numDup = 1;
}
}
if(dupCount >= 2){
System.out.println("more");
}
else{
System.out.println(dupCount);
}
int numDup=0,dupCount=1,maxCount=0;
int-previous=-1;
对于(int i=0;i=2){
System.out.println(“更多”);
}
否则{
系统输出打印项次(重复计数);
}
问题是我没有使用dupCount来计算重复次数最多的值,如果>=2是“更多”。 但是程序运行不正确 我喜欢的示例程序 输入=5//输出=5 输入=111222333//输出=3 输入=01223605504//输出=0 输入=10003444//输出=更多 有两个问题
int numDup=0,dupCount=1,maxCount=0;
int-previous=-1;
for(int i=0;i=2){
System.out.println(“更多”);
}
否则{
系统输出打印项次(重复计数);
}
有两个问题
int numDup=0,dupCount=1,maxCount=0;
int-previous=-1;
for(int i=0;i=2){
System.out.println(“更多”);
}
否则{
系统输出打印项次(重复计数);
}
您可以使用Map
和Collections
轻松完成。以下是带有样本测试的程序:
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String args[]) {
printDupCount("5");
printDupCount("1123321233");
printDupCount("01223605504");
printDupCount("10440034");
}
static void printDupCount(String lines) {
String[] strs = lines.trim().split("");
int[] numbers = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
numbers[i] = Integer.parseInt(strs[i]);
}
// Put the count of each number into a map
Map<Integer, Integer> groupMap = new HashMap<Integer, Integer>();
for (int n : numbers) {
if (groupMap.containsKey(n))
groupMap.put(n, groupMap.get(n) + 1);
else
groupMap.put(n, 1);
}
// Find the maximum count
Map.Entry<Integer, Integer> maxEntry = null;
for (Map.Entry<Integer, Integer> entry : groupMap.entrySet()) {
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
maxEntry = entry;
}
}
// Find the frequency of maximum count
int freq = Collections.frequency(groupMap.values(), maxEntry.getValue());
// Check if the frequency of maximum count matches with that of any other count
boolean more = false;
for (Map.Entry<Integer, Integer> entry : groupMap.entrySet()) {
if (freq == Collections.frequency(groupMap.values(), entry.getValue())
&& entry.getValue() != maxEntry.getValue()) {
more = true;
break;
}
}
// Print the result
if (more) {
System.out.println("More");
} else {
System.out.println(maxEntry.getKey());
}
}
}
注意:
5
3
0
More
Map
属性上工作,根据该属性,如果将具有现有键的新条目放入it中,它将替换现有条目其余的逻辑是直截了当的。此外,我在代码中添加了重要的注释,以使代码更易于理解。如果有任何疑问,请随时发表评论。您可以使用
Map
和Collections
轻松进行评论。以下是带有样本测试的程序:
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String args[]) {
printDupCount("5");
printDupCount("1123321233");
printDupCount("01223605504");
printDupCount("10440034");
}
static void printDupCount(String lines) {
String[] strs = lines.trim().split("");
int[] numbers = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
numbers[i] = Integer.parseInt(strs[i]);
}
// Put the count of each number into a map
Map<Integer, Integer> groupMap = new HashMap<Integer, Integer>();
for (int n : numbers) {
if (groupMap.containsKey(n))
groupMap.put(n, groupMap.get(n) + 1);
else
groupMap.put(n, 1);
}
// Find the maximum count
Map.Entry<Integer, Integer> maxEntry = null;
for (Map.Entry<Integer, Integer> entry : groupMap.entrySet()) {
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {
maxEntry = entry;
}
}
// Find the frequency of maximum count
int freq = Collections.frequency(groupMap.values(), maxEntry.getValue());
// Check if the frequency of maximum count matches with that of any other count
boolean more = false;
for (Map.Entry<Integer, Integer> entry : groupMap.entrySet()) {
if (freq == Collections.frequency(groupMap.values(), entry.getValue())
&& entry.getValue() != maxEntry.getValue()) {
more = true;
break;
}
}
// Print the result
if (more) {
System.out.println("More");
} else {
System.out.println(maxEntry.getKey());
}
}
}
注意:
5
3
0
More
Map
属性上工作,根据该属性,如果将具有现有键的新条目放入it中,它将替换现有条目其余的逻辑是直截了当的。此外,我在代码中添加了重要的注释,以使代码更易于理解。如果有任何疑问,请随时发表评论。谢谢,但我会在他们遇到新的most时重置dupCount,因此我使用dupCount来确定有多少。10003444因为0和4相等,所以需要“更多”。但如果Ex.是111222333,那么它应该只有3。无法理解要求。请举例说明。1112223333应该只有3,请解释因为最大计数值是3,我只需要最大计数值。您正在打印dupCount,那么它应该是1,对吗?谢谢,但我在遇到新的最大值时重置了dupCount,所以我使用dupCount来确定有多少个。10003444因为0和4相等,所以需要“更多”。但如果Ex.是111222333,那么它应该只有3。无法理解要求。请举例说明。1112223333应该只有3,请解释因为最大计数值是3,我只需要最大计数值。您正在打印dupCount,那么它应该是1,对吗?提示。。。学习使用调试器或简单的打印语句来准确理解代码正在执行的操作。然后将其与你的想法相匹配,看看它应该做什么!提示。。。学习使用调试器或简单的打印语句来准确理解代码正在执行的操作。然后将其与你的想法相匹配,看看它应该做什么!