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

国家建设部建筑业网站百度竞价入口

国家建设部建筑业网站,百度竞价入口,十大家居家装网站哪个好,绵阳新区大建设1.子集II题目链接思路:这是一道标准的组合问题数组排序去重。依然是使用回溯。注意:去重代码只需要判断同一树层上是否有重复,同组合总和II(https://blog.csdn.net/xiaomingming99/article/details/129396344)解法&…

1.子集II

题目链接

思路:这是一道标准的组合问题+数组排序+去重。依然是使用回溯。

注意:去重代码只需要判断同一树层上是否有重复,同组合总和II(https://blog.csdn.net/xiaomingming99/article/details/129396344

解法:

class Solution {List<List<Integer>> res = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {// 记得数组排序Arrays.sort(nums);back(nums, 0);return res;}private void back(int[] nums, int startIndex) {res.add(new ArrayList<>(path));for (int i = startIndex; i < nums.length; i++){// 去重if (i > startIndex && nums[i] == nums[i - 1])continue;path.add(nums[i]);back(nums, i + 1);path.removeLast();  // 回溯}}
}

2.递增子序列

题目链接

思路:回溯+数组去重;

回溯三部曲:

  • 返回参数:startindex和数组nums。 全局变量path(记录单个结果)和res(记录结果集合)

  • 终止条件:本题要求递增子序列大小至少为2,所以要判断path.size()>=2

  • 单层逻辑:for循环中,需要判断path的最后一个元素是否大于当前nums[i],且还需要添加代码实现同一父节点下的同层上使用过的元素就不能再使用

注意:

1.&&和||同时出现时,&&优先级更高,先执行&&

2.在90.子集II (opens new window)中是通过排序原数组,判断同一树层元素是否重复来达到去重。

而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。

class Solution {private  LinkedList<Integer> path = new LinkedList<>();private  List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {backtracking(nums,0);return res;}private void backtracking (int[] nums, int start) {// path的size必须大于等于2  且不需要return,因为后面可能还有更长的符合条件的序列if (path.size() >= 2) {res.add(new ArrayList<>(path));}// 标记数组  用于去重  // 比如[4,6,7,7] 使用这个数组就可以只出现一次[4,6,7] 标记6使用过int[] used = new int[201];for (int i = start; i < nums.length; i++) {// 先执行&&,判断path的最后一个元素是否大于当前值,如果是则说明不符合递增// 后执行|| 判断当前元素是否被使用过if (!path.isEmpty() && nums[i] < path.getLast()  ||(used[nums[i] + 100] == 1)) continue;used[nums[i] + 100] = 1; // 记录这个元素在本层用过了,本层后面不能再用了path.add(nums[i]);backtracking(nums, i + 1);path.removeLast();}}
}

3.全排列

题目链接

思路:回溯的排列问题。

回溯三部曲:

  • 递归函数参数:参数只需要nums。不需要startIndex参数,因为排列问题,每次都要从头开始搜索。全局变量path(记录单个结果)和res(记录结果集合)

  • 递归终止条件:只需要收集元素的数组path大小达到和nums数组一样大,说明到达叶子结点,可以返回

  • 单层搜索的逻辑:for循环中需要判断当前元素是否已经在path中,若在直接continue。

注意: 首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,区别于组合问题。

解法:

class Solution {List<List<Integer>> res = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> permute(int[] nums) {back(nums);return res;}private void back(int[] nums) {// 终止条件if (path.size() == nums.length){res.add(new ArrayList<>(path));return;}for (int i = 0; i < nums.length; i++){// 判断path中是否含有遍历元素if (path.contains(nums[i]))continue;path.add(nums[i]);back(nums);path.removeLast();}}
}
http://www.shuangfujiaoyu.com/news/48955.html

相关文章:

  • 网站的下载二维码怎么做中山seo排名
  • 网站建设合同书注意事项北京公司排名seo
  • 升华网络推广软件手机优化大师官方免费下载
  • 网站防封链接怎么做广告关键词有哪些
  • 网站开发有哪些方向seo网站优化策划书
  • wordpress 早期文章搜索引擎外部链接优化
  • 做网站宣传的公司培训机构好还是学校好
  • 做网站499seo搜索优化软件
  • 化妆培训网站开发seo排名赚app靠谱吗
  • 网站分类表合肥seo整站优化
  • 黄骅市市长优化模型有哪些
  • 九江网站优化windows优化大师有什么功能
  • 怎样免费做自己的网站南京网络优化培训
  • 网站做流量2022年新闻大事
  • 北京专业做网站的济南网络优化网址
  • 婚车租赁网站怎样做百度推广获客成本大概多少
  • 网站获取访问者qq号码海南百度推广公司
  • 做网站的公司没有技术关键词优化排名软件s
  • wordpress 服务器错误滁州网站seo
  • 网站建设公司东莞seo常用工具包括
  • 做新的网站seo世界网站排名查询
  • 广州传业建设有限公司网站nba最新比赛直播
  • 如何让网站自适应屏幕百度手机浏览器下载
  • 电子口岸网站做资料库中国做网站的公司排名
  • 政府门户网站的重要性百度做广告费用
  • 广州信科做网站广告网页
  • 店铺seo是什么意思seo品牌优化
  • 网站制作合同注意事项网店买卖有哪些平台
  • php网站开发推荐书籍辽源seo
  • 大连手机自适应网站建设公司上海seo优化公司bwyseo