gpt4 book ai didi

java - 如何从 int[] 数组打印最长的数字序列 (Java)

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:26 24 4
gpt4 key购买 nike

我是编程初学者,我需要从 int[] 数组中打印最长的数字序列。例如,如果我们有:

int[] numbers = {1, 3, 3, 5, 5, 5, 5, 5, 5, 6, 0, 12, 2, 2, 2, 12, 0};

结果应该是:

String result = "5, 5, 5, 5, 5, 5";

我写了一些不起作用的糟糕代码,但也许它会给你一些想法。

public String findLargestSequence(int[] numbers) {
int bestStart = 0;
int curStart = 0;
int bestLength = 1;
int curLength = 1;
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > numbers[i - 1]) {
curLength++;
if (curLength > bestLength) {
bestStart = curStart;
bestLength = curLength;
}
} else {
curStart = i;
curLength = 1;
}
}
List<String> identical = new ArrayList<>();
for (int i = 0; i < bestLength; i++) {
identical.add(String.valueOf(numbers[bestStart + i]));
}
return Joiner.on(", ").join(identical);
}

更新。感谢@phatfingers,我发现了问题:(numbers[i] >numbers[i - 1]) 应该是 (numbers[i] ==numbers[i - 1])。但仍然存在另一个问题。如果我们有类似的东西:

int[] 数字 = {1, 2, 3, 3, 4, 4};

结果是:

"3, 3"

我认为在这种情况下,我们可以:

1)说,我们没有任何最长的序列或

2)显示所有序列,例如:

String result = "Founded sequences: " + sequence1 + ", " + sequence2;

3) 对上面的代码不执行任何操作。

你会做什么?

最佳答案

这显示了最大出现次数,您也可以计算并打印它们

public static int consecutive(int[] array) {
if (array.length <= 1) {
return array.length;
}
int maxRun = 0;
for (int i = 1; i < array.length; i++) {
int thisRun = 1;
while (i < array.length && array[i - 1] + 1 == array[i]) {
thisRun++;
i++;
}
if (maxRun < thisRun) { // checking geater occurance
maxRun = thisRun;
}
}
return maxRun;
}

关于java - 如何从 int[] 数组打印最长的数字序列 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41792461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com