这是来自雅虎的问题。 从两个阵列A和B中找到3个数字。 输入:未排序的数组A和B. 输出:总和为M的三个数字的集合。 有很多种结果可以满足需求。
请求:A中的一个号码,B中的另外两个号码;或者来自B的一个数字,另外两个来自A.空间复杂度O(1),努力减少时间复杂度。
如何实现并避免重复的元组? 这个qustion喜欢问题from here。但是有一些简单的方法可以解决吗? 我想知道如何避免两个数组的重复结果? 如果我们不对数组进行排序,我们是否可以实现具有相同要求的算法。
答案 0 :(得分:0)
一种简单的方法来获取一个独特的列表,而不是选择的列表......
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]);
}
}
});