下面是解決方案leetcode的組合問題https://leetcode.com/problems/combinations/。基本上,n選擇k,返回所有可能性。我遇到了我的第二個for循環,你看javascript array.push(array.push(x))奇怪的結果
tmpResult[i].push(n);
result.push(tmpResult[i]);
,如果我做
result.push(tmpResult[i].push(n));
內這個問題的結果是非常不同的,我得到一個錯誤:22 線:類型錯誤:tmpResult [我] .push不是一個函數。 我來自java的世界,什麼是JavaScript做不同的行代碼不同於上面的2行?
var combine = function(n, k) {
if (k === 0 || k > n)
return [];
var result = [];
if (k === 1) {
for (var i = 1; i <= n; i++) {
result.push([i]);
}
return result;
}
// choose n
var tmpResult = combine(n-1,k-1);
for(var i = 0; i < tmpResult.length; i++) {
tmpResult[i].push(n);
result.push(tmpResult[i]);
// below doesnt work
// result.push(tmpResult[i].push(n));
}
// not choose n
result = result.concat(combine(n-1, k));
return result;
};
謝謝,我應該更仔細地看過api! –