这是雅虎的一个问题。从两个数组 A 和 B 中找到 3 个数字。输入:未排序的数组A和B。输出:三个数字的集合,总和为M。有多种结果可以满足需求。
请求:一个来自 A 的号码,另外两个来自 B;或者一个来自B,另外两个来自A。空间复杂度O(1),努力降低时间复杂度。
如何实现和避免重复元组?这个问题喜欢来自这里的问题。但是有什么简单的方法可以解决吗?我想知道如何避免两个数组的重复结果?如果我们不对数组进行排序,我们是否可以实现具有相同需求的算法。
一种简单的方法来获得一个唯一的列表以供选择,该列表不是被选择的......
HTML:
Array A:<div id="select_container">
<select id="select_box"></select>
</div>
Array B:<div id="array_B"></div>
Values from B which are not equal to what you selected: <div id="uniques"></div>
javascript:
var arrA = [1, 2, 3, 4];
var arrB = [1, 5, 6, 7];
var BArrLength = arrB.length;
var i;
var selectedFromA;
var uniqueArrB = [];
var selectContainer = $('#select_container');
var htmlString = '';
$.each(arrA, function(index, value){
htmlString += '<option value="'+value+'">'+value+'</option>';
});
$('#select_box').append('<option></option>'+htmlString);
$.each(arrB, function(index, value){
$('#array_B').append(value);
});
$('#select_box').html(htmlString);
$('#select_container').on('change', 'select', function(){
selectedFromA = $('#select_box option:selected').val();
$('#uniques').html("");
for(i = 0; i < BArrLength; i += 1){
if(arrB[i] != selectedFromA){
$('#uniques').append(''+arrB[i]);
}
}
});