給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的數字可以無限制重複被選取。
說明:
** 所有數字(包括 target)都是正整數。**
解集不能包含重複的組合。
示例 1:
輸入: candidates = [2,3,6,7], target = 7,
所求解集為:
[ [7],
[2,2,3]
] 示例 2:
輸入: candidates = [2,3,5], target = 8,
所求解集為:
[ [2,2,2,2],
[2,3,3],
[3,5]
]
/**
* 給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
* candidates 中的數字可以無限制重複被選取。
* @param candidates 無重複元素的陣列
* @param target 目標數
* @return 結果集合
*/public list> combinationsum(int candidates, int target)
return result;
}/*** 搜尋方法
* @param result 結果存放集合
* @param temp 臨時結果存放集合
* @param tempsum 臨時集合中的數總和
* @param candidates 待搜尋陣列
* @param target 目標數
*/private void searchcandidatestosum(list> result, listtemp, int tempsum, int candidates, int target)
/*** 當總和等於目標數時
*/if( tempsum == target )
return;
}/**
* 每次加入乙個數字,然後進行下一層的搜尋
* 結束時再將該數字刪除,進行下一次的搜尋
*/for (integer i : candidates)
}/**
* 查詢result中是否有temp集合
* @param result 被查集合
* @param temp 要查的集合
* @return 如果存在返回false 不存在返回true
*/private boolean findresult(list> result, listtemp)
}/**
* 若newitem的大小為0時
* 說明newitem與temp的內容完全相同
* 則返回false
*/if( newitem.size() == 0 )}}
return true;
}
39 組合總和
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2...
39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...
39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candida...