1. 搜索算法 在树(图/状态集)中寻找特定节点 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个顶点出发,到另一个顶点的路径。图上的搜索算法有深度优先、广度优先搜索算法,和A*A?、IDA*IDA? 等启发式搜索算法。 广度优先搜索和深度优先搜索 ...
分类:
编程语言 时间:
2020-07-19 23:30:25
阅读次数:
103
851. 喧闹和富有 描述: 思路:深度优先(带记忆)。 这个题有点秒。。 853. 车队 描述: 思路: 我们首先对这些车辆按照它们的起始位置降序排序,并且用 (target - position) / speed 计算出每辆车在不受其余车的影响时,行驶到终点需要的时间。对于相邻的两辆车 S 和 ...
分类:
其他好文 时间:
2020-07-19 23:17:22
阅读次数:
92
递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子,它 ...
分类:
编程语言 时间:
2020-07-14 00:42:37
阅读次数:
70
算法的开章,递归是实现其他高级算法如深度优先、分治等的基础; 碰到一个题目就找它的重复性,重复性有最近的重复性(根据重复性怎么构造怎么分解-->分治、回溯等办法,本质就是递归),或者最优重复性(即动态规划)。 本质上就是找它的重复性。 找重复性以及分解问题,最后组合每个子问题的结果。 1. 分治 D ...
分类:
编程语言 时间:
2020-07-11 19:23:28
阅读次数:
48
N个城市,编号1到N。城市间有R条单向道路。每条道路连接两个城市,有长度和过路费两个属性。Bob只有K块钱,他想从城市1走到城市N。问最短共需要走多长的路。如果到不了N,输出-12<=N<=1000<=K<=100001<=R<=10000每条路的长度 L, 1 <= L <= 100,每条路的过路 ...
分类:
其他好文 时间:
2020-07-08 18:21:18
阅读次数:
47
题目信息 时间: 2019-07- 题目链接:Leetcode tag: 平衡二叉树 深度优先搜索 难易程度:简单 题目描述: 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例1: 给定二叉树 [3,9,20,nu ...
分类:
其他好文 时间:
2020-07-05 17:48:08
阅读次数:
71
python设计模式之模板模式 编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。 现实中,我们没法始终写出100%通用的代码。许多算法都有一些(但并非全部)通用步骤。广度优先搜索( Breadth-First Search, BFS)和深度优先搜索 ...
分类:
编程语言 时间:
2020-07-04 20:55:38
阅读次数:
58
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组 ...
分类:
其他好文 时间:
2020-07-04 01:30:22
阅读次数:
51
一、二叉树的深度优先遍历 对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。 那么深度遍历有重要的三种方法。这三种方式常被用于访问树的节点,它们之间的不同在于访问每个节点的次序不同。这三种遍历分别叫做先序遍历(preorder_t ...
分类:
编程语言 时间:
2020-07-04 01:10:49
阅读次数:
70
一、技术总结 这题是关于DFS即深度优先遍历算法,核心是掌握深度遍历算法的思想,也就是不断往下一个结点进行查找,如果查找不到,那么就返回; 关键点一个是递归边界,也就是查找不到的条件,以及能够往下查找的路有多少条; 二、参考代码 #include<iostream> #include<vector> ...
分类:
其他好文 时间:
2020-07-02 21:44:59
阅读次数:
55