java - 找到最长的递减序列

标签 java arrays algorithm sequence

我试图在一个数组中找到最长的递减序列。我不确定我在以下代码中做错了什么。

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 ...};

一切正常。 那么如何重写我调用数据的方式呢?

获取数据是

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

最佳答案

4444444认为正在减少?如果不是,那么您要严格检查 <而不是 <= .

您能否提供更多信息,例如您的回答失败的地方?

关于java - 找到最长的递减序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4101060/

相关文章:

java - 搜索两个数组进行匹配,没有额外的内存

java - 从中间向外遍历数组的算法?

java - 通用接口(interface)实现不起作用

字符数组大小

java - 四象限三角形

algorithm - 创建一个使用另一个随机函数作为种子生成随机数的函数

algorithm - 算法的运行时间和速度有什么区别?

java - JDBC 瘦驱动程序 : Invalid Packet Lenght [sic]

java - 辅助数据类型

c - 如何在for循环中存储从rand()函数获得的数字?