【问题标题】:Find 3 numbers from two arrays equal to a given number M从两个数组中找出等于给定数 M 的 3 个数
【发布时间】:2025-12-05 10:35:01
【问题描述】:

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

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

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

【问题讨论】:

  • 你应该展示一些研究元素。你试过什么?是否有时间和空间复杂度目标?你应该检查*.com/questions/5630363/…
  • 甚至不清楚您是想要三个都等于M 的数字还是三个总和等于M 的数字。
  • 抱歉问题描述的不清楚。数组 A 和 B 未排序。三个数相加等于M。空间复杂度O(1),努力降低时间复杂度。如何实现和避免重复元组?

标签: arrays algorithm yahoo


【解决方案1】:

一种获得唯一列表以供选择的简单方法,该列表不是所选列表...

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

【讨论】: