从两个等于给定数字M的数组中找到3个数字

时间:2013-10-04 07:18:45

标签: arrays algorithm yahoo

这是来自雅虎的问题。 从两个阵列A和B中找到3个数字。 输入:未排序的数组A和B. 输出:总和为M的三个数字的集合。 有很多种结果可以满足需求。

请求:A中的一个号码,B中的另外两个号码;或者来自B的一个数字,另外两个来自A.空间复杂度O(1),努力减少时间复杂度。

如何实现并避免重复的元组? 这个qustion喜欢问题from here。但是有一些简单的方法可以解决吗? 我想知道如何避免两个数组的重复结果? 如果我们不对数组进行排序,我们是否可以实现具有相同要求的算法。

1 个答案:

答案 0 :(得分:0)

一种简单的方法来获取一个独特的列表,而不是选择的列表......

http://jsfiddle.net/jsxzA/

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]);
        }
    }    
});