-4

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

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

如何实现和避免重复元组?这个问题喜欢来自这里的问题。但是有什么简单的方法可以解决吗?我想知道如何避免两个数组的重复结果?如果我们不对数组进行排序,我们是否可以实现具有相同需求的算法。

4

1 回答 1

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]);
        }
    }    
});
于 2013-10-04T08:15:31.933 回答