做亚马逊有哪些网站可以清货,wordpress手机客户端开发教程,asp.net 4.0网站开发,施工企业资质序列文章目录 Leetcode 39. 组合总和解题思路代码总结 Leetcode 40. 组合总和 II解题思路代码总结 Leetcode 131. 分割回文串解题思路代码总结 草稿图网站 java的Deque
Leetcode 39. 组合总和 题目#xff1a;39. 组合总和 解析#xff1a;代码随想录解析 解题思路
还是回溯三部… 文章目录 Leetcode 39. 组合总和解题思路代码总结 Leetcode 40. 组合总和 II解题思路代码总结 Leetcode 131. 分割回文串解题思路代码总结 草稿图网站 java的Deque
Leetcode 39. 组合总和 题目39. 组合总和 解析代码随想录解析 解题思路
还是回溯三部曲
代码
class Solution {ListListInteger res new ArrayList();ListInteger paths new ArrayList();int curSum 0;private void backtracking(int[] candidates, int target, int startIndex) {if (curSum target) {if (curSum target)res.add(new ArrayList(paths));return;}for (int i startIndex; i candidates.length; i) {paths.add(candidates[i]);curSum candidates[i];backtracking(candidates, target, i);paths.remove(paths.size() -1);curSum - candidates[i];}}public ListListInteger combinationSum(int[] candidates, int target) {backtracking(candidates, target, 0);return res;}
}总结
越来越熟练了
Leetcode 40. 组合总和 II 题目40. 组合总和 II 解析代码随想录解析 解题思路
递归加一定的减枝如果第一个元素一样的话就跳过。
代码
class Solution {ListListInteger res new ArrayList();ListInteger paths new ArrayList();int curSum 0;private void backtracking(int[] candidates, int target, int startIndex) {if (curSum target) {if (curSum target)res.add(new ArrayList(paths));return;}for (int i startIndex; i candidates.length; i) {if (i startIndex candidates[i] candidates[i-1])continue;paths.add(candidates[i]);curSum candidates[i];backtracking(candidates, target, i 1);paths.remove(paths.size() - 1);curSum - candidates[i];}}public ListListInteger combinationSum2(int[] candidates, int target) {Arrays.sort(candidates);backtracking(candidates, target, 0);return res;}
}总结
暂无
Leetcode 131. 分割回文串 题目131. 分割回文串 解析代码随想录解析 解题思路
一个函数判断是否是回文 一个回溯函数
代码
class Solution {ListListString res new ArrayList();ListString paths new ArrayList();private boolean isPalindrome(String s, int begin, int end) {for (int i begin, j end; i j; i, j--) {if (s.charAt(i) ! s.charAt(j))return false;}return true;}private void backtracking(String s, int startIndex){if (startIndex s.length()) {res.add(new ArrayList(paths));return;}for (int i startIndex; i s.length(); i) {if (isPalindrome(s, startIndex, i)) {paths.add(s.substring(startIndex, i1));backtracking(s, i1);paths.remove(paths.size()-1);}}}public ListListString partition(String s) {backtracking(s, 0);return res;}
}总结
暂无