◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
java 数组的 mex(minimum excluded value)是数组中没有出现的最小非负整数。计算 mex 的步骤:创建布尔数组 exists,长度为数组长度加 1。遍历数组,对于每个非负数将其在 exists 中标记为 true。遍历 exists 数组,返回第一个值为 false 的索引作为 mex。
Java 数组的 MEX 是什么?
MEX(Minimum Excluded Value)是数组中没有出现的最小非负整数。例如,对于数组 [2, 3, 5, 7],MEX 为 0,因为 0 到 7 的所有整数都出现在数组中。
如何计算 MEX?
Java 中可以使用以下步骤计算 MEX:
立即学习“Java免费学习笔记(深入)”;
public static int findMex(int[] arr) { boolean[] exists = new boolean[arr.length + 1]; // 记录数组中存在的元素 for (int num : arr) { if (num >= 0 && num < exists.length) { exists[num] = true; } } for (int i = 0; i < exists.length; i++) { if (!exists[i]) { return i; // 找到第一个不存在于数组中的非负整数 } } return exists.length; // 如果数组中不存在 MEX,则返回数组长度 }
举个例子
对于数组 [2, 3, 5, 7],计算 MEX 的步骤如下:
在本例中,exists 数组为:[true, false, true, true, true, true, true, true]。第一个值为 false 的索引为 1,因此 MEX 为 1。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。