2013-10-04 38 views
-4

這是yahoo的一個問題。 從兩個數組A和B中查找3個數字。 輸入:未排序數組A和B. 輸出:與M相加的三組數字。 滿足需求的結果有很多種。從兩個數組中找出3個數字,等於給定數字M

要求:一個來自A,另外兩個來自B;或者來自B的一個數字,另外兩個來自A.空間複雜度O(1),努力減少時間複雜度。

如何實現並避免重複的元組? 此問題喜歡問題from here。但是有沒有一些簡單的方法可以解決? 我想知道如何避免兩個數組的重複結果? 如果我們不排序數組,我們是否可以實現具有相同需求的算法。

+1

你應該展示一些研究元素。你有什麼嘗試?有沒有時間和空間複雜性的目標? 你應該檢查http://stackoverflow.com/questions/5630363/find-two-elements-in-an-array-that-sum-to-k – Traklon

+0

你甚至不清楚你是否想要三個數字都等於'M '或三個總和爲'M'的數字。 – Henrik

+0

不好意思描述這個問題。數組A和B未排序。總和三個數字等於M.空間複雜度O(1),努力減少時間複雜度。如何實現和避免重複的元組? – user2780417

回答

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]); 
     } 
    }  
}); 
相關問題