
算法
驯鹿人
天道酬勤
展开
-
小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行...----腾讯校园招聘
问题描述思路代码原创 2020-09-22 11:23:18 · 2485 阅读 · 1 评论 -
二叉树的前序/中序/后序遍历方法的递归与循环的实现
二叉树的前序/中序/后序遍历方法的递归与循环的实现对于二叉树的三种遍历方法, 递归方法实现起来简单,明白。但是效率不好,并且不安全,可能会栈溢出。循环的实现,肯定是基于栈的数据结构来实现,要复杂一些。代码如下:前序遍历的实现:// 前序遍历 ----基于递归void PreorderTraversal(BinaryTreeNode* pRoot_){ // 为空时,直接返回了 if (!pRoot_) return; std::cout &l.转载 2020-09-08 09:26:16 · 184 阅读 · 0 评论 -
矩阵中的d路径--剑指Offer(C++)
矩阵中地路径–回溯法(矩阵、递归)一、回溯法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。(详情介绍)二、问题描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的原创 2020-08-31 20:16:35 · 730 阅读 · 0 评论 -
简单易懂回溯算法
一、什么是回溯算法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。二、回溯算法思想回溯法一般都用在要给出多个可以实现最终条件的解的最终形式。回溯法要求对解要添加一些约束条件。总的来说,如果转载 2020-08-31 18:32:51 · 313 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。--剑指offer(C++)
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。在做这个问题之前,让我们看看简化版题目的做法。简化版题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析: 对于这样的问题,采用递归求解是最佳方法。通过分析很容易得到下表。台阶数n跳法0011223345……n?表1分析表1,我们原创 2020-05-18 21:23:29 · 1399 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的push和pop操作。 队列中的元素为int类型。
**题目描述:**用两个栈来实现一个队列,完成队列的push和pop操作。 队列中的元素为int类型。**思路:**栈是后进先出,队列是后进后出。堆栈1中元素出栈,出栈的元素进入堆栈2,这样就使得堆栈 1和堆栈2中的元素的顺序恰好是相反的。(比如堆栈1中元素顺序为{5 4 3 2 1},那堆栈2中元素顺序必然为{1 2 3 4 5})利用这个性质就可以完成队列的push和pop操作。堆栈1堆栈2实际队列511422333244155原创 2020-05-17 22:36:47 · 263 阅读 · 0 评论