Tag: max

如何在O(N)时间和O(C)空间复杂度中使用Java 8流API从列表中仅删除一个max(min)

这是一个代码,用于从列表中仅删除其中一个最大值(在这种情况下是第一个,但这是无关紧要的)。 时间为O(n) ,空间为O(n) (超出输入)。 public List removeOneOfTheMax(List nums) { int max = Integer.MIN_VALUE; int maxIndex = -1; Iterator it = nums.iterator(); for (int i = 0; it.hasNext(); i++) { Integer temp = it.next(); if (max < temp) { maxIndex = i; max = temp; } } nums.remove(maxIndex); return nums; } 1.与使用Java 8流API的方法相同的是什么? 我想保留时间和空间的复杂性,因此不允许排序。 2.实际上,如果你将LinkedList传递给上面的代码,空间复杂度将是O(C) (再次超出输入),但据我所知, […]

如何确定最大堆栈大小限制?

我想从Java中以编程方式确定堆栈的最大大小(由-Xss设置的大小)。 我该怎么做呢? 或者,由于我的Java模块也使用本机代码模块,我可以通过JNI执行此操作; 但是怎么样?

重现行为MAX_VALUE和MIN_VALUE

以下内容也适用于其他MIN_VALUE和MAX_VALUE ,但现在只关注Integer 。 我知道在Java中,整数是32位, Integer.MAX_VALUE = 2147483647 (2 31 -1), Integer.MIN_VALUE = -2147483648 (-2 31 )。 当你超出它们的界限时使用这些值计算时,数字会回绕/溢出。 因此,当您执行类似Integer.MAX_VALUE + 1 ,结果与Integer.MIN_VALUE相同。 以下是MIN_VALUE和MAX_VALUE一些基本算术计算: Integer.MAX_VALUE: 2147483647 Integer.MAX_VALUE + 1: -2147483648 Integer.MAX_VALUE – 1: 2147483646 Integer.MAX_VALUE * 2: -2 Integer.MAX_VALUE * 3: 2147483645 Integer.MAX_VALUE * 4: -4 Integer.MAX_VALUE * 5: 2147483643 Integer.MAX_VALUE / Integer.MAX_VALUE: 1 Integer.MAX_VALUE * Integer.MAX_VALUE: […]

在2Darrays中找到峰值的算法

假设我在java int[][] array有一个2D累加器int[][] array 。 该数组可能如下所示: (x和z轴表示数组中的索引,y轴表示值 – 这些是int[56][56] ,值为0~4500) 要么 我需要做的是在arrays中找到峰值 – 第一个峰值有2个峰值,第二个arrays有8个峰值。 这些峰值总是“明显的”(峰值之间始终存在间隙),但它们不必像这些图像那样相似,它们可能或多或少是随机的 – 这些图像不是基于真实数据,只是样本。 真正的arrays可以有5000×5000的大小,峰值从几千到几十……算法必须是通用的,我不知道arrays或峰值有多大,我也不知道那里有多少个峰值是。 但我确实知道某种阈值 – 峰值不能小于给定值。 问题是,一个峰可以由附近的几个较小的峰组成(第一个图像),高度可以是非常随机的,并且在一个arrays中大小可以显着不同(大小 – 我的意思是它在arrays中占用的单位数 – 一个峰值可以包含6个单位,其他峰值可以包含90个单位。 它也必须快速(全部在1次迭代中完成),arrays可能非常大。 任何帮助表示赞赏 – 我不希望你的代码,只是正确的想法:)谢谢! 编辑:你询问了域名 – 但它很复杂,而且它无法解决问题。 它实际上是一个带有3D点的ArrayLists数组,如ArrayList [] [],并且有问题的值是ArrayList的大小。 每个峰包含属于一个簇的点(在这种情况下为平面) – 该数组是算法的结果,它对点云进行分段。 我需要在峰值中找到最高值,这样我就可以将“最大”的arraylist中的点拟合到一个平面,从中计算一些参数,然后正确地聚集来自峰值的大部分点。

在Java中生成具有max,min和mean(平均值)的随机数

我需要生成具有以下属性的随机数。 最小应该是200 Max应该是20000 平均值(平均值)是500。 可选:第75百分位为5000 绝对不是均匀分布,也不是高斯分布。 我需要给出一些左偏斜。

从文件输入中查找java中的最大值

我是Java的新手,我正在尝试编写一个程序,要求用户输入仅包含数字的txt文件的名称,程序将输出文件中数字的总和,平均值,最大值和最小值。 我已经编写了大部分程序,但是我很难找到值的最大值和最小值。 您可以提供的任何信息都会有所帮助,如果我不够清楚,我可以尝试详细说明。 到目前为止我的代码是: public class NumberFile{ public static void main(String[] args){ boolean goodName = false; int currentNumber, sum = 0, numberCount=0; Scanner numberFile = null; FileReader infile; Scanner input = new Scanner(System.in); System.out.println(“Please enter the name of the file you wish to import: “); String fileName = input.nextLine(); while (!goodName){ try{ infile = new […]

如何确定从Java中的文本文件读入的最大值和最小值

我正在为一堂课做家庭作业,我正在寻找一些有用的指针,而不是完整的解决方案。 基本上,我必须编写一个Java程序,该程序读入文本文件并逐行列出信息,列出行号,最后打印出最大值和最小值以及与每个值相关的年份。 文本文件包含该年份和该年份的温度。 因此,它列出了类似“1900 50.9”的内容。 我不打算使用数组或扫描仪,这是作业的一部分。 我已经能够成功地使程序每年打印出来,并且相应的温度与行数一致。 我被告知,并确实使用了while循环。 现在,我唯一的问题是以某种方式访问​​文本文件,我可以以某种方式区分所有温度,这是最大值,哪个是最小值,以及每个温度发生在哪一年。我到目前为止还没有寻求帮助因为我希望能够自己解决这个问题,但由于延迟处罚,这项任务不再值得信任。 任何帮助都会非常感激,因为我仍然想解决这个问题。 谢谢。 这就是我所拥有的。 public class main { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { File temps = new File (“temps.txt”); //Creates path to temps.txt file FileReader textReader = new FileReader (temps); //Input information from temps.txt file […]

Stream.max(Integer :: max):意外结果

我正在学习1z0-809:Java SE 8程序员II使用Enthuware的模拟测试。 遇到这个问题。 List ls = Arrays.asList(3,4,6,9,2,5,7); System.out.println(ls.stream().reduce(Integer.MIN_VALUE, (a, b)->a>b?a:b)); //1 System.out.println(ls.stream().max(Integer::max).get()); //2 System.out.println(ls.stream().max(Integer::compare).get()); //3 System.out.println(ls.stream().max((a, b)->a>b?a:b)); //4 以上哪个陈述将打印9? 答案是 1和3 但还有别的东西。 我不明白为什么 System.out.println(ls.stream().max(Integer::max).get()); // PRINTS 3 我尝试使用peek调试它,但它无法帮助我理解。 我尝试使用Integer::max和Integer::compare对ls进行排序 ls.sort(Integer::max); // [3, 4, 6, 9, 2, 5, 7] ls.sort(Integer::compare); // [2, 3, 4, 5, 6, 7, 9] 当然,我得到的事实是Integer::max不是比较器,因此它具有相同的签名。 对我来说, max在第一种情况下应该是7 ,因为它是最后一个元素,就像我用Ìnteger::compare排序一样 有人可以把它分解成简单的东西吗?

Java IO是否具有最大文件名长度?

不同的操作系统具有不同的文件名最大长度。 在处理文件时,Java是否对文件名长度有任何限制?

Java Math.min / max性能

编辑:maaartinus给出了我正在寻找的答案,而tmyklebu的问题数据帮了很多,所以谢谢两者! 🙂 我已经阅读了一些关于HotSpot如何在代码中注入一些“内在函数”的内容,特别是对于Java标准Math libs( 来自这里 ) 所以我决定尝试一下,看看HotSpot可以直接做出多大的反对(特别是因为我听说min / max可以编译成无分支的asm)。 public static final int max ( final int a, final int b ) { if ( a > b ) { return a; } return b; } 那是我的实施。 从另一个SO问题我已经读过,使用三元运算符使用额外的寄存器,我没有发现在执行if块和使用三元运算符之间存在显着差异(即返回(a> b)?a:b)。 分配一个8Mb的int数组(即200万个值)并随机化它,我做了以下测试: try ( final Benchmark bench = new Benchmark( “millis to max” ) ) { int […]