查找两个数组之间的公共最小值
Finding common minimum value between two arrays
我正在处理Javascript中的一个问题。查找两个数组之间的公共最小值。然而,有人告诉我,这可能对某些价值观不起作用。问题出在哪里?
function cmp(a, b) { return a - b; }
function findMinimum(A, B) {
var n = A.length;
var m = B.length;
A.sort(cmp);
B.sort(cmp);
var i = 0;
for (var k = 0; k < n; k++) {
if (i < m - 1 && B[i] < A[k])
i += 1;
if (A[k] == B[i])
return A[k];
}
return -1;
}
这应该可以工作。只需将第一个if
替换为一个while
。while
循环通过阵列B,直到它找到一个大于A的最小元素的元素。然后,外部for
循环通过A,找到与B的当前元素匹配的任何元素,或者直到它到达一个大于B的当前元件的元素,在此过程重复。
function cmp(a, b) {
return a - b;
}
function findMinimum(A, B) {
var n = A.length;
var m = B.length;
A.sort(cmp);
B.sort(cmp);
var i = 0;
for (var k = 0; k < n; k++) {
while (i < m - 1 && B[i] < A[k])
i += 1;
if (A[k] == B[i])
return A[k];
}
return -1;
}
findMinimum([1,3,5,7], [0,0,1,4,9]); // 1
findMinimum([3,5,7,9], [1,2,4,7,10]); // 7
我们来看看,
A = [ 1, 3, 5, 7]
B = [ 0, 0, 1, 4, 6]
然后跑完你的循环。
您的脚本失败。
正确的逻辑应该是,在1次迭代中递增i
或k
。并非两者都
我会做一些类似的事情
for (var k = 0; k < n;) {
if (A[k] == B[i])
return A[k];
if (i < m - 1 && B[i] < A[k])
i += 1;
else
k += 1;
}
我建议在这里更改您的方法。一开始对这两个数组进行排序是非常昂贵的。找到两个数组的交集集,然后对其进行排序并返回其最小值,仅此而已。
// java code for this
import java.util.Arrays;
public class CommonMinValue {
public static void main(String[] args) {
int [] A = {1,5,6,7,8,9,11};
int [] B = {11,51,16,7,18,19,161};
int n = A.length;
int m = B.length;;
Arrays.sort(A);
System.out.println(Arrays.toString(A));
System.out.println(Arrays.toString(B));
Arrays.sort(B);
int commMin=-1;
int i = 0;
for (int k = 0; k < n;) {
if (A[k] == B[i]) {
commMin = A[k];
break;
}
if (i < m - 1 && B[i] < A[k])
i ++;
else
k ++;
}
System.out.println("Common minimum value "+commMin);
}
}
相关文章:
- Html5输入属性的默认值,如最小值、最大值、大小等
- Angular JS在一行中查找最小值
- 识别滑块范围的最小值和最大值
- 求除零以外的最小值
- Javascript-如何使用函数找到数组的最小值
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- 如何在拖动后获得图表的最小值和最大值放大高图表
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- HTML5范围滑块最小值和最大值
- 如何仅在存在最小值和最大值时才显示错误消息
- 在 JavaScript 事件中添加最小值和最大值
- 从 JavaScript 中的数组中获取最大值和最小值
- 获取整数对象属性名称的最小值和最大值
- 高图表 - 在缩放重置中设置最大值和最小值
- Java 脚本 设置日期的最小值和最大值属性
- 如何设置jQuery微调器的最大值和最小值
- 使用函数验证最小值和最大值之间的用户输入
- JS正则表达式检查字符串的长度为字符数,介于最小值和最大值之间,不计算空格
- 查找两个数组之间的公共最小值
- Symfony 3:我想创建一个滑块,过滤最小值和最大值之间的研究列表