白山建设局网站,wordpress id开发者,专门做吃播的网站,门户网站建设存在的问题和差距文章目录 491.递增子序列46.全排列47.全排列II 491.递增子序列 文字讲解#xff1a;递增子序列 视频讲解#xff1a;递增子序列 **状态#xff1a;这题看了文字讲解才AC#xff0c;掌握了如何在回溯里通过Set集合来对同层节点去重 思路#xff1a;
代码#xff1a;
cla… 文章目录 491.递增子序列46.全排列47.全排列II 491.递增子序列 文字讲解递增子序列 视频讲解递增子序列 **状态这题看了文字讲解才AC掌握了如何在回溯里通过Set集合来对同层节点去重 思路
代码
class Solution {ListListInteger result new ArrayList();LinkedListInteger tempList new LinkedList();public ListListInteger findSubsequences(int[] nums) {backTracking(nums, 0);return result;}//本题的关键在于同层不能有重复元素当前层的节点不能大于上一层的值public void backTracking(int[] nums, int startIndex) {if (startIndexnums.length) {return;}//借助set集合去重HashSet hs new HashSet();for (int i startIndex; i nums.length; i) {if ((!tempList.isEmpty() tempList.get(tempList.size()-1) nums[i]) || hs.contains(nums[i])) {continue;}hs.add(nums[i]);tempList.offer(nums[i]);if (tempList.size()1) {result.add(new ArrayList(tempList));}backTracking(nums, i1);tempList.pollLast();}}
}46.全排列 文字讲解全排列 视频讲解全排列 状态做完组合类的题这题好简单 思路
代码
class Solution {ListListInteger result new ArrayList();LinkedListInteger tempList new LinkedList();boolean[] usedArr;public ListListInteger permute(int[] nums) {this.usedArr new boolean[nums.length];for (int i 0; i this.usedArr.length; i) {this.usedArr[i] false;}backTracking(nums);return result;}public void backTracking(int[] nums) {if (tempList.size()nums.length) {//收集result.add(new ArrayList(tempList));return;}for (int i 0; i nums.length; i) {if (usedArr[i]) {continue;}usedArr[i]true;tempList.offer(nums[i]);backTracking(nums);tempList.pollLast();usedArr[i]false;}}
}47.全排列II 文字讲解全排列II 视频讲解全排列 状态将前两题的思路整合这题ok 思路
代码
class Solution {ListListInteger result new ArrayList();LinkedListInteger tempList new LinkedList();boolean[] used;public ListListInteger permuteUnique(int[] nums) {Arrays.sort(nums);this.used new boolean[nums.length];for (int i 0; i used.length; i) {used[i] false;}backTracking(nums);return result;}public void backTracking(int[] nums) {if (tempList.size()nums.length) {result.add(new ArrayList(tempList));return;}HashSetInteger hs new HashSet();for (int i 0; i nums.length; i) {if (used[i] || hs.contains(nums[i])) {continue;}hs.add(nums[i]);used[i] true;tempList.offer(nums[i]);backTracking(nums);tempList.pollLast();used[i] false;}}
}