Я пытаюсь найти самую длинную последовательность убывающих чисел в массиве. Я не уверен, что я делаю неправильно в следующем коде.Найти самую длинную убывающую последовательность
public static int getDecSeq(double[] data) {
int currentSeq = 1;
int currentIndex = 1;
int longestSeq = 0;
int longestIndex = 0;
for (int i = currentIndex; i < data.length; i++) {
if (data[i] < data[i - 1]) {
currentSeq++;
} else {
currentSeq = 1;
currentIndex = i;
}
if (currentSeq > longestSeq) {
longestSeq = currentSeq;
longestIndex = currentIndex;
}
//double[] sequence = new double[longestSeq];
//for (int j = longestIndex; j < longestSeq; j++) {
//sequence[j]
//}
}
return longestSeq;
}//close getDecSeq
Похоже, что настоящая проблема заключается в том, как правильно настроить данные, чтобы я мог использовать их в методе.
getData (input) возвращает кучу чисел из файла и сохраняет их в массиве.
я писал:
double[] data = getData(input);
System.out.println("longest sequence is" + getDecSeq(data));
Я делаю это неправильно. Мои методы работают. Когда я объявлял переменные данные как:
double[] data = {119.1, 186.4, 46.3, 89.0 ...};
Все работало нормально. Итак, как переписать способ, которым я называю данные работать?
GetData является
public static double[] getData(Scanner input) {
double[] list = new double[70]; //Construct an array, length 70, to hold values from file
int count = 0;
while (input.hasNextDouble()) {
double n = input.nextDouble();
list[count] = n;
count++;
}
double[] newList = new double[count];
for (int i = 0; i < newList.length; i++) {
newList[i] = list[i];
}
return newList;
}//close getData
В чем проблема?Пожалуйста, дайте пример, для которого ваш алгоритм не работает ... –
См. Также: http://stackoverflow.com/questions/3878105/finding-the-longest-down-sequence-in-a-java-array (но дон 't copy!) –
Что это за 'getData'? Отправьте код этой функции. –