当前位置: 首页 > wzjs >正文

网站建设好坏的标准山东今日热搜

网站建设好坏的标准,山东今日热搜,网站图片设置4:3,温州做网站公司哪家好一. 学习文章及资料 491.递增子序列46.全排列47.全排列 II 二. 学习内容 1. 递增子序列 (1) 题目要点: 递增子序列,数组中可能含有重复元素 (2) 解题思路: 如下一选取元素不是递增或使用过,则跳过这一分支,用set记…

一. 学习文章及资料

  • 491.递增子序列
  • 46.全排列
  • 47.全排列 II

二. 学习内容

1. 递增子序列

(1) 题目要点:

  • 递增子序列,
  • 数组中可能含有重复元素

(2) 解题思路:

如下一选取元素不是递增或使用过,则跳过这一分支,用set记录已使用元素以达去重效果

class Solution {List<List<Integer>> result=new ArrayList<>();List<Integer> path=new LinkedList<>();void backtracking(int[] nums,int startIndex){if(path.size()>=2){result.add(new ArrayList(path));}HashSet<Integer> hs=new HashSet<>();for(int i=startIndex;i<nums.length;i++){if(!path.isEmpty()&&path.get(path.size()-1)>nums[i]||hs.contains(nums[i])){//如下一个数不是递增或使用过,则跳过continue;}hs.add(nums[i]);path.add(nums[i]);backtracking(nums,i+1);path.removeLast();}return;}public List<List<Integer>> findSubsequences(int[] nums) {backtracking(nums,0);return result;}
}

2. 全排列

(1) 解题要点:

  • 没有重复数字
  • 返回其所有可能的全排列

(2) 解题思路:

首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,这和之前分析的子集以及组合所不同的地方。可以看出元素1在[1,2]中已经使用过了,但是在[2,1]中还要在使用一次1,所以处理排列问题就不用使用startIndex了,每层i都从0开始,使用used数组记录使用情况

class Solution {List<List<Integer>> result=new ArrayList<>();List<Integer> path=new LinkedList<>();void backtracking(int[] nums,boolean[] used){if(path.size()==nums.length){result.add(new ArrayList(path));}for(int i=0;i<nums.length;i++){if(used[i]==true) continue;used[i]=true;path.add(nums[i]);backtracking(nums,used);path.removeLast();used[i]=false;}return;}public List<List<Integer>> permute(int[] nums) {boolean[] used=new boolean[nums.length];backtracking(nums,used);return result;}
}

3. 全排列 II

(1) 题目要点:

  • 包含重复数字
  • 返回所有不重复的全排列

(2) 题目思路:

以示例中的 [1,1,1]为例 (为了方便举例,已经排序)抽象为一棵树,去重过程如图:

47.全排列II2

图中我们对同一树层,前一位(也就是nums[i-1])如果使用过,那么就进行去重。

要强调的是去重一定要对元素进行排序,这样我们才方便通过相邻的节点来判断是否重复使用了

组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果

class Solution {List<List<Integer>> result=new ArrayList<>();List<Integer> path=new LinkedList<>();void backtracking(int[] nums,boolean[] used){if(path.size()==nums.length){result.add(new ArrayList(path));return;}for(int i=0;i<nums.length;i++){// used[i - 1] == true ,说明同一树枝nums[i - 1]使用过// used[i - 1] == false,说明同一树层nums[i - 1]使用过if(i>0&&nums[i]==nums[i-1]&&used[i-1]==false) continue;//防止一种数字重复使用if(used[i]==false){//每个元素数只能用一次,防止重复使用path.add(nums[i]);used[i]=true;backtracking(nums,used);used[i]=false;path.removeLast();}}}public List<List<Integer>> permuteUnique(int[] nums) {boolean[] used = new boolean[nums.length];Arrays.sort(nums); backtracking(nums,used);return result;}
}

http://www.dtcms.com/wzjs/267910.html

相关文章:

  • 成都建网站要多少钱百度帐号个人中心
  • 湖北省城乡建设厅网站网站宣传方法
  • 深圳交友网站建设潍坊疫情最新消息
  • 广州做企业网站西安网站seo费用
  • 自己做装修图网站百度下载安装到手机
  • 做网站及小程序需要会哪些技能网页是怎么制作的
  • 关于要求建设网站的请示店铺推广软文范例
  • wordpress 的论坛模板深圳seo优化排名
  • 易搜网站建设seo培训网的优点是
  • 免费外国黄色网站直播网站排名
  • 公司网站建设哪里好如何设计网站步骤
  • 网站页面可以用什么框架做百度推广收费
  • 网站用户管理系统怎么创建网址
  • 降龙网络专业做网站代发软文
  • 怎样免费设计logoseo关键词是什么意思
  • 源美网站建设如何进行网络推广
  • b站推广网站2024年不用下载高清的网站制作
  • 怎样建立一个免费的网站seo技术学院
  • 网站代理最快最干净小米的推广软文
  • 适合用struts2做的网站seo的优化策略有哪些
  • wordpress 日志目录青岛seo百科
  • 机械毕业设计代做网站杭州百度seo优化
  • 广州乐地网站建设公司销售怎么做
  • 永久免费做网站网络营销策划书的结构
  • 全景网站模版企业查询天眼查
  • wordpress图片生成插件下载地址seo百度网站排名软件
  • 弹幕网站用什么做seo关键词排名优化教程
  • 提升学历是什么意思优化设计电子版在哪找
  • 地方门户网站源码seo课程排行榜
  • 网站的联系我们怎么做app拉新推广接单平台