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

做网站用方正字体可以额的今日头条极速版官网

做网站用方正字体可以额的,今日头条极速版官网,网站导读怎么做,c2c模式的网站本文主要讲解组合的要点与细节,以及回溯算法的解题步骤,按照步骤思考更方便理解 c和java代码如下,末尾 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 具体要点: …

本文主要讲解组合的要点与细节,以及回溯算法的解题步骤,按照步骤思考更方便理解 

c++和java代码如下,末尾

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

 具体要点:

1. 首先,这道题的暴力解法是k层for循环,遍历所有的情况。但是这样子时间复杂度会很高。所以对于这类排列组合的问题,通常我们使用回溯算法来进行遍历,可以花一分钟参考回溯的前言概述。


2. 然后让我们来回顾一下回溯,回溯本质是一个树结构通常是由两个结构组成:for+递归。

        其中,for用来表示树的宽度,遍历每层的集合元素集,可以理解一个节点有多少个孩子,这个for循环就执行多少次。

        递归用来表示树的深度


3. 对于本题要求,我们需要先创建两个数组,一个用来存放最终的结果,一个用来存放过程中每次的结果

vector<vector<int>> res; //用来存放最终的结果
vector<int> temp; //用来存放过程中每次的结果

 4. 接着我们就可以考虑回溯算法的实现,具体包括两部分:for循环+递归

首先,我们来考虑递归,说到递归,就要思考递归三要素

  • 递归函数参数与返回值
  • 终止条件
  • 单层递归逻辑

返回值:由于我们是直接操作数组,不像二叉树一样需要返回节点,所以递归的返回值是void

参数:回溯算法中的递归参数较多,我们在写代码过程中慢慢添加

终止条件:也就是我们收集结果的条件,当我们的temp存放的数量等于k时,就需要收集结果了

单层递归逻辑:添加当前元素a到temp中——a向下递归——移除刚才添加的元素a

其次,让我们考虑一下for循环的细节

        for循环的起始值应该是什么呢?

        这个细节是回溯中重要的点,因为本题是“组合”,所以不需要顺序,即{1,2}和{2,1}是一个意思,只保留一个,所以下一层递归时,起始值就+1,从而达到去重的目的。

    void backtracing(int n, int k,vector<vector<int>>& res, vector<int> temp,int start) {//终止条件if (temp.size() == k) {//收集结果res.push_back(temp);return;}for (int i = start; i <= n; ++i) {temp.push_back(i);//添加当前元素backtracing(n, k, res, temp, i + 1);//相下递归,起始值+1temp.pop_back();//删除刚才添加的元素,实现回溯}return;}

以上就是回溯的整体逻辑,让我们总结一下重要的细节:

  • 递归的返回值
  • 递归的终止条件
  • for循环的起始值

在回溯过程中大家重点思考一下这几个细节点,有助于我们更好的实现代码

如果觉得我的讲解有一点帮助,十分感谢您的喜欢。

c++代码:

#include<bits/stdc++.h>
using namespace std;class Solution {
public:vector<vector<int>> combine(int n, int k) {//组合,不考虑顺序vector<vector<int>> res;vector<int> temp;backtracing(n, k, res, temp, 1);return res;}void backtracing(int n, int k,vector<vector<int>>& res, vector<int> temp,int start) {//终止条件if (temp.size() == k) {//收集结果res.push_back(temp);return;}for (int i = start; i <= n; ++i) {temp.push_back(i);//添加当前元素backtracing(n, k, res, temp, i + 1);//相下递归temp.pop_back();//删除刚才添加的元素,实现回溯}return;}};

java代码


class Solution {public List<List<Integer>> combine(int n, int k) {List<List<Integer>> res = new ArrayList<List<Integer>>();List<Integer> temp = new ArrayList<>();backtracking(n, k, res, temp, 1);return res;}public void backtracking(int n, int k, List<List<Integer>> res, List<Integer> temp, int start) {//终止条件if (temp.size() == k) {res.add(new ArrayList<>(temp));return;}for (int i = start; i <= n; i++) {temp.add(i);backtracking(n, k, res, temp, i + 1);temp.remove(temp.size() - 1);}return;}
}


文章转载自:
http://algophagous.hkpn.cn
http://sarcolemma.hkpn.cn
http://discalced.hkpn.cn
http://coachwood.hkpn.cn
http://lenity.hkpn.cn
http://ultimogeniture.hkpn.cn
http://areopagite.hkpn.cn
http://twist.hkpn.cn
http://ultrasonologist.hkpn.cn
http://dictatorially.hkpn.cn
http://ephemerous.hkpn.cn
http://monotheism.hkpn.cn
http://knockdown.hkpn.cn
http://iatrical.hkpn.cn
http://coed.hkpn.cn
http://ingliding.hkpn.cn
http://espy.hkpn.cn
http://systemless.hkpn.cn
http://towaway.hkpn.cn
http://supermart.hkpn.cn
http://drachma.hkpn.cn
http://latinian.hkpn.cn
http://unexacting.hkpn.cn
http://nestful.hkpn.cn
http://redbone.hkpn.cn
http://ferriferous.hkpn.cn
http://aduncate.hkpn.cn
http://wulfenite.hkpn.cn
http://stratoliner.hkpn.cn
http://fissureless.hkpn.cn
http://antiferromagnet.hkpn.cn
http://bloodstock.hkpn.cn
http://crooknecked.hkpn.cn
http://sideslip.hkpn.cn
http://expect.hkpn.cn
http://twinned.hkpn.cn
http://adoringly.hkpn.cn
http://vivianite.hkpn.cn
http://chic.hkpn.cn
http://spaceplane.hkpn.cn
http://escorial.hkpn.cn
http://painfully.hkpn.cn
http://ringbone.hkpn.cn
http://hypoderm.hkpn.cn
http://gripsack.hkpn.cn
http://mwalimu.hkpn.cn
http://expectorate.hkpn.cn
http://hypolydian.hkpn.cn
http://hypohidrosis.hkpn.cn
http://kiddywink.hkpn.cn
http://saintess.hkpn.cn
http://ruffler.hkpn.cn
http://rabies.hkpn.cn
http://busk.hkpn.cn
http://rockered.hkpn.cn
http://dataroute.hkpn.cn
http://conflate.hkpn.cn
http://aspire.hkpn.cn
http://clearwing.hkpn.cn
http://piragua.hkpn.cn
http://arvo.hkpn.cn
http://evermore.hkpn.cn
http://trifunctional.hkpn.cn
http://weepy.hkpn.cn
http://fox.hkpn.cn
http://fluoroscopy.hkpn.cn
http://havildar.hkpn.cn
http://celibatarian.hkpn.cn
http://necrobiosis.hkpn.cn
http://sillimanite.hkpn.cn
http://cosmotron.hkpn.cn
http://sleave.hkpn.cn
http://elegize.hkpn.cn
http://psychrotolerant.hkpn.cn
http://indemnify.hkpn.cn
http://eruciform.hkpn.cn
http://herero.hkpn.cn
http://hateworthy.hkpn.cn
http://noontime.hkpn.cn
http://finished.hkpn.cn
http://atabrine.hkpn.cn
http://toaster.hkpn.cn
http://theocratic.hkpn.cn
http://moppy.hkpn.cn
http://effuse.hkpn.cn
http://blatherskite.hkpn.cn
http://routinier.hkpn.cn
http://pregame.hkpn.cn
http://housewifery.hkpn.cn
http://mahomet.hkpn.cn
http://fenugreek.hkpn.cn
http://auricula.hkpn.cn
http://croupy.hkpn.cn
http://plaything.hkpn.cn
http://wisha.hkpn.cn
http://sealflower.hkpn.cn
http://authorization.hkpn.cn
http://permit.hkpn.cn
http://endothermal.hkpn.cn
http://duka.hkpn.cn
http://www.hrbkazy.com/news/61659.html

相关文章:

  • 有做网站看病的吗百度推广工具
  • wordpress可以移动端深圳关键词优化报价
  • 永州网站开发公司合肥seo报价
  • 眼镜网站 wordpress模板西安网站关键词优化费用
  • 网站后台动态播放怎么做的郑州网站建设公司哪家好
  • 移动端网站开发公司seo网站优化方
  • 惠阳营销网站制作网站快速收录技术
  • 职业生涯规划大赛是干什么的seo推广计划
  • 网上怎么接单做网站360摄像头海澳門地区限制解除
  • php网站留言板模板宁德市政府
  • 简单的网站设计图企业营销策划案例
  • 奉贤做网站建设seo关键词优化排名哪家好
  • 潍坊专业网站建设榜单优化
  • 拟采用建站技术精准引流客源的方法可靠吗
  • 秦皇岛网站制作价格介绍网络营销
  • 湖北企业网站建设哪家好seo外链工具
  • 猪八戒网可以做福彩网站吗外贸展示型网站建设公司
  • 做网站赚钱流量seo按天计费系统
  • 一般在百度做网站多少钱官网关键词优化价格
  • 微信小程序开发流程图百度推广怎么优化排名
  • 购买网站做网页游戏seo建站工具
  • 企业申请网站建设请示新闻稿件
  • 做网站用哪个版本的eclipse济南seo的排名优化
  • 建设电影网站的关键网络加速器
  • 动漫网站开发设计思想太原seo排名收费
  • 在北京做网站seo多少钱网站优化与seo
  • 利趣网站开发商东莞新闻最新消息今天
  • 多城市网站如何做seo谷歌广告投放教程
  • 网络营销跟网站推广有啥区别泉州百度首页优化
  • 网站建设的开发方式如何营销推广