leetcode "199. 二叉树的右视图" 因为某些比赛导致三天没写编程题,回来之后发现自己好像啥都不会了,写每一题都要花费好长时间/_ \ 牢骚结束:二叉树的遍历一般用dfs或者bfs,dfs一般用于前中后序遍历,bfs一般用于层序遍历 方法一:这一题最直观的解法就是得到二叉树的层序遍历,然后 ...
分类:
其他好文 时间:
2020-04-22 16:17:55
阅读次数:
61
A*是一种搜索算法,一般基于一个估价函数f(x) = g(x) + h(x),通过这个函数来进行有方向的搜索以提高搜索的效率(而不是bfs、dfs那样的盲目搜索)其中g(x)指从初始状态到当前状态的花费,h(x)为当前状态到终状态的最小花费,以两者之和来估计起始状态到终状态的总花费f(x)在A*算法 ...
分类:
编程语言 时间:
2020-04-22 10:23:20
阅读次数:
79
一般框架: 二叉搜索树框架 二叉树设计总路线: 1. 二叉树算法设计的总路线:把当前节点要做的事做好,其他的交给递归框架,不用当前节点操心。 2. 如果当前节点会对下面的子节点有整体影响,可以通过辅助函数增长参数列表,借助参数传递信息。 例题1:判断是否是一个BST,有些时候直接写不出来需要使用辅助 ...
分类:
其他好文 时间:
2020-04-21 23:43:57
阅读次数:
79
深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。 BFS 广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 第一层: 0 -> {6,2,1,5} 第二层: 6 -> {4} ...
分类:
其他好文 时间:
2020-04-20 18:54:14
阅读次数:
63
这种在图中找岛屿的题目我们在前面已经讲过了,这个题目同样属于这类题目,我们很自然想到的就是DFS和BFS方法。 一、题目描述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外 ...
分类:
其他好文 时间:
2020-04-20 12:04:17
阅读次数:
55
广度优先搜索找出的是段数最少的路径 而狄克斯特拉算法可以找出最快的路径 ①找出最便宜的节点。比如说到A节点6分钟,到B节点2分钟【未明确前往终点的时间,假设无穷大】,所以节点B是最近的。 ②计算经节点B前往各个邻居所需的时间,B-->A ,五分钟,更短! 直接到A需要6分钟。 对于节点B的邻居,如果 ...
分类:
编程语言 时间:
2020-04-19 18:03:51
阅读次数:
66
题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路: 因为该题是输出符合整数的返回值,所以必定涉及到树的遍历,这里是根节点到各个节点 ...
分类:
其他好文 时间:
2020-04-19 10:51:31
阅读次数:
58
经过思考蒜头君终于解决了怎么计算一个迷宫的最短路问题,于是蒜头君找到一个新的迷宫图,来验证自己是否真的会计算一个迷宫的最短路。 为了检验自己计算的是否正确,蒜头君特邀你一起来计算。 输入格式 第一行输入两个整数 n 和 m,表示这是一个 n×m 的迷宫。 接下来的输入一个 n 行 m 列的迷宫。其中 ...
分类:
其他好文 时间:
2020-04-19 09:21:46
阅读次数:
74
#include <cstdio> #include <cmath> #include <cstring> #include <queue> #include <iostream> #include <algorithm> using namespace std; int h[50001],ne[5 ...
分类:
其他好文 时间:
2020-04-18 20:10:11
阅读次数:
64
1 //BFS + 贪心 2 //维护一个区间[l,r],在这里面可以找到能够跳到最大位置,step++,同时更新l,r 3 class Solution 4 { 5 public: 6 int jump(vector<int>& nums) 7 { 8 if(nums.size() < 2) re ...
分类:
其他好文 时间:
2020-04-18 15:51:53
阅读次数:
45