4 回答
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用 aSet并將第一個(gè)數(shù)組映射到該值以及對(duì)該集合的該值的檢查。
function checkMatch(a, b) {
var values = new Set(b);
return a.map(v => v + values.has(v));
}
console.log(checkMatch([2, 9], [2, 5, 9]));
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以簡(jiǎn)單地利用map這里:
var array1 = [2, 9];
var array2 = [2, 5, 9];
var result = array1.map(n=>(array2.includes(n) ? n++ : n, n));
console.log(result);
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用includes方法檢查列表 (a) 的所有元素是否存在于您需要比較的所有其他數(shù)組中。然后您可以更新列表(a)中的值
function checkMatch(a, b){
for (let i = 0; i < a.length; i++) {
if(b.includes(a[i])){
a[i]++;
}
}
return a;
};
const array1 = [2, 9];
const array2 = [2, 5, 9];
console.log(checkMatch(array1, array2))
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您知道所有數(shù)組都已排序,那么您可以使用以下方法 -
代碼 -
const array1 = [2, 9];
const array2 = [2, 5, 9];
function checkMatch(a, b) {
let i = 0,
j = 0;
while (i < a.length && j < b.length) {
if (a[i] === b[j]) {
a[i]++;
j++;
} else if (a[i] < b[j]) {
i++;
} else j++;
}
return a;
}
console.log(checkMatch(array1, array2))
解釋 -
上述方法的時(shí)間復(fù)雜度為 ,O(N+M)而您的時(shí)間復(fù)雜度可能為O(N*M).
在上述函數(shù)中,您利用了數(shù)組已排序這一事實(shí)。因此,當(dāng) 時(shí)a[i] < b[j],您知道必須增加索引 i 才能獲得可能等于或大于 的值b[j]。當(dāng) 時(shí),情況相同(但相反)a[i] > b[j]。因此,這種方法降低了代碼的整體時(shí)間復(fù)雜度,并提高了整體效率。
希望這可以幫助!
添加回答
舉報(bào)
