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

一级做a爰片香蕉视频网站推销产品的软文500字

一级做a爰片香蕉视频网站,推销产品的软文500字,深圳市住建局和建设局官网,速成网站怎么做目录 回溯相关 topK问题 回溯相关 题目一:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点 开始往下一直到叶结点所经过的结点形成一条路径。 OJ地址 图示如下。 要解决当前的问题&#xf…

目录

回溯相关

topK问题 


回溯相关

        题目一:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点 开始往下一直到叶结点所经过的结点形成一条路径。

OJ地址

        图示如下。 

        要解决当前的问题,其实就涉及到了算法中一个思想,就是回溯的思想,这个题目也是一个经典的 DFS(深度优先遍历)+回溯法+递归 题型。

        何为回溯法?

        像二叉树的先序遍历,中序遍历,后续遍历就是很明显的回溯法。我们以中序遍历为例,我们第一个访问的节点一定是左子树中最左的节点,然后再访问当前的最左的节点的根节点,然后再去访问当前根节点的右子树,将最左的节点,最左节点的根节点,最左节点的根节点的右子树都访问完之后,当前的这个根节点可能就是上一个树的左子树或者右子树,如果是上一个树的左子树,就访问上一个树的根节点,如果是上一个树的右子树,就表示上一个树就已经访问完,然后再去判断上一个树是上一个树的左子树还是右子树,依次向上回溯,最终实现整个树的中序访问。这就是一个典型的回溯法。

        对于回溯法,我们主要分为四步。

  1. 添加待选结果,这个结果可能是最终结果,也可能不是最终结果。
  2. 判定待选结果中符合条件的结果,将符合条件的结果加入结果集。
  3. DFS,进行深度遍历。
  4. 回退,递归检测下一个待选结果。

        编码如下。

/*** struct TreeNode {*  int val;*  struct TreeNode *left;*  struct TreeNode *right;*  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {public:void  FindPathHelper(TreeNode* root, int target, vector<vector<int>>& result,vector<int>& v) {if (root == nullptr) {return;}v.push_back(root->val);target -= root->val;if (target == 0 && root->left == nullptr && root->right == nullptr) {result.push_back(v);}//获取左子树的结果集FindPathHelper(root->left, target, result, v);//获取右子树的结果集FindPathHelper(root->right, target, result, v);v.pop_back();}vector<vector<int> > FindPath(TreeNode* root, int target) {vector<vector<int>> result; //结果集vector<int> v;//结果集if (root != nullptr) {FindPathHelper(root, target, result, v);}return result;}
};

        题目二: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出 来的所有字符串abc,acb,bac,bca,cab和cba。OJ地址

        图示如下。

        题目解析: 全排列的问题,也可以看成一个多叉树的 DFS+回溯+递归

        我们可以直接确定a,b,c 三个节点的位置,然后再去通过递归的方式去获取其它元素的排列种类数。

 

        编码如下。

class Solution {public:void swap(string& str, int start, int i) {int temp = str[start];str[start] = str[i];str[i] = temp;}void PermutationHelper(string& str, int start, unordered_set<string>& s) {if (start == str.size() - 1) {s.insert(str);return;}//for循环可以理解为是求每一个字符作为首字符时的字符组合的种类数for (int i = start; i < str.size(); i++) {swap(str, start,i); //确定第一个字符的位置,然后去求剩下的字符的组合数PermutationHelper(str, start + 1, s);swap(str, start, i);}}vector<string> Permutation(string str) {vector<string> result;//结果集//string s;//待选结果unordered_set<string> s;//对结果集中的元素进行去重if (str.size()) {PermutationHelper(str, 0, s);result.insert(result.begin(), s.begin(), s.end());sort(result.begin(), result.end());}return result;}
};

topK 问题 

        题目三:输入 n 个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 OJ地址

        图示如下。

        题目解析:这个题目不建议使用排序的方法解决,而是建议使用堆的思想来解决。

        回顾一下,什么是堆,堆其实就是一个完全二叉树,堆顶的元素是完全二叉树中最大的或者是最小的元素,这取决于该堆是大堆还是小堆,要解决这种问题我们可以使用建立 K 个数的大堆,为什么要建立 K 个数的大堆,大家可以去数据结构专栏查看堆那一章节的知识,这里不做过多解释。

        但是我们知道,在 stl 容器中,有一个天然是大堆的容器,就是 priority_queue 优先级队列,所以我们可以使用优先级队列查找最小的前 K 个数。

        编码如下。

#include <queue>
class Solution {public:vector<int> GetLeastNumbers_Solution(vector<int>& input, int k) {vector<int> result;if (input.size() == 0 || k == 0 || input.size() < k) {return result;}//priority_queue默认是大堆,如果要建小堆,需要自己定义仿函数priority_queue<int> q;for (int i = 0; i < input.size(); i++) {if (i < k) {q.push(input[i]);} else {if (q.top() > input[i]) {q.pop();q.push(input[i]);}}}for (int i = 0; i < k; i++) {result.push_back(q.top());q.pop();}return result;}
};

        以上便是本期的所有内容。

        本期内容到此结束^_^ 

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

相关文章:

  • wordpress 无响应爱站工具seo综合查询
  • wordpress添加支付教程seo的优化步骤
  • 建筑公司网站 新闻世界杯积分榜排名
  • 南充商城网站建设在线种子资源库
  • 沈阳建网站平台客户营销
  • 湖南高端网站建设网站首页的优化
  • 专业的西安免费做网站响应式网站模板的应用
  • 建设营销网站多少钱全国最新疫情最新消息
  • 电信做网站吗网络营销都具有哪些功能
  • 网站建设的主要流程有哪些深圳全网推广公司
  • 手机网站客户端设计与实现百度推广是做什么的
  • 网站建设职位有什么百度图片
  • 网站建设最新模板下载最近一周新闻大事件
  • 阿里巴巴国际站运营培训竞彩足球最新比赛
  • 购物网站含有哪些模块怎样在百度打广告
  • c 在线视频网站开发seo查询seo
  • 培训教育学校的网站建设方案全网营销推广 好做吗
  • 网上提供免费主页空间的网站怎样做线上销售
  • 真么做网站国内新闻最近新闻今天
  • 网站建设推广优化网站推广计划方案
  • 各类手机网站建设做百度推广需要什么条件
  • wordpress迁移保留账号seo推广服务
  • 网站开发工程师 英文打开百度app
  • 网站建设公司工作流程百度浏览器app
  • 建设好党建网站的重要性怎么样推广自己的网站
  • 公司网站建设行业怎么样专业网站建设公司首选
  • 菏泽网站建设哪家好小红书kol推广
  • 哪个网站可以做中国代购优化关键词排名软件
  • php装修门户网站源码seo网站关键词优化排名
  • 个人一般注册什么类型的公司河南seo关键词排名优化