[英]Why the array returned by the combinationSum function is empty (Javascript)?
combinationSum function 返回的resultArr為空。 當我控制台記錄 ds 數組時,它打印出正確的答案,但最終的 output 數組是 [[],[]] 。
var combinationSum = function(candidates, target) { const resultArr = [] function combinationSumHelper(idx, candidates, ds, target){ if(idx === candidates.length){ // base case if(target === 0){ console.log(ds) *// This line outputs right ans but resultArr returned by combinationSum function is empty* resultArr.push(ds) } return } if(candidates[idx] <= target){ ds.push(candidates[idx]) combinationSumHelper(idx, candidates, ds, target - candidates[idx]) ds.pop() } combinationSumHelper(idx+1, candidates, ds, target) } combinationSumHelper(0, candidates, [], target) return resultArr }; console.log(combinationSum([2,3,6,7], 7))
OUTPUT: [ [], [] ]
預計 OUTPUT: [[2,2,3],[7]]
標准輸出: [ 2, 2, 3 ] [ 7 ]
這將為您提供您正在尋找的 output:
var combinationSum = function(candidates, target) {
const resultArr = []
function combinationSumHelper(idx, candidates, ds, target){
if(idx === candidates.length){ // base case
if(target === 0){
console.log(ds) *// This line outputs right ans but resultArr returned by combinationSum function is empty*
resultArr.push([...ds])
}
return
}
if(candidates[idx] <= target){
ds.push(candidates[idx])
combinationSumHelper(idx, candidates, ds, target - candidates[idx])
ds.pop()
}
combinationSumHelper(idx+1, candidates, ds, target)
}
combinationSumHelper(0, candidates, [], target)
return resultArr
};
console.log(combinationSum([2,3,6,7], 7))
您面臨的問題是以下帶有ds.push
和ds.pop
的if
子句正在改變您的數組和最終的 output。
通過將代碼更改為resultArr.push([...ds])
,您可以復制數組。 這將確保它不會進一步發生變異。
當我運行此代碼時,我得到的 output 是:[[2, 2, 3], [7]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.