算法技巧总结,算法规律模板
文章平均质量分 79
粥粥同学
力大无穷,擅长搬运各种型号的服务器;推理大师,致力于各种网络故障排除;多才多艺,精通多种语言的“Hello World”。
展开
-
多种方法实现二叉树的先序、中序、后序、层序遍历
文章目录为什么需要会这个?先序、中序、后序遍历先序遍历中序遍历后序遍历层序遍历为什么需要会这个?在面试的时候,经常会被问到各种和二叉树相关的问题,而和二叉树相关的问题,一般要和二叉树中的遍历方式结合起来。二叉树中最重要的几种遍历方式包括先序遍历、中序遍历、后序遍历和层序遍历。其中先序遍历、中序遍历以及后序遍历可以有多种实现方式DFS深度优先搜索。这种方式又叫做Traverse,使用一个全局变量来记录整个二叉搜索树的结果,递归函数里面没有返回值分治算法。分治算法也可以用递归来实现,递归函数有返回值原创 2020-08-16 21:52:19 · 849 阅读 · 0 评论 -
图解回溯算法
回溯算法是什么?回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。可以解决什么问题?排列、组合(子集、幂集、字符全排列)。 在传值时,对于排列问题,是要删掉单个用过的元素;组合问题,是删掉前面所有的元素。数组、字符串,给定一个特定的规则,尝试搜索迭代找到某个解。二维数组下的DFS搜索(八皇后、黄金矿工、数独)原创 2020-08-14 21:30:27 · 6129 阅读 · 0 评论 -
动态规划、回溯法、贪心算法的区别与联系
文章目录概念描述这篇文章主要讲的是动态规划以及回溯法之间的区别和联系。会解释几个名词以及回溯法解题如何转变为动态规划解题概念描述原创 2020-02-20 17:49:16 · 12910 阅读 · 5 评论 -
总结分析一下三种求解最短路问题的算法,dijkstra算法,spfa算法,floyd算法。
说是总结,其实自己也没有学多长时间只是把自己这段时间的一些经验总结下来,用来供后来的初学者涨点经验吧。对于学习算法,个人的理解就是首先要去理解算法的本质,然后想想算法的实现过程,如何用代码去描述这个算法,然后就是去记模板了(对于像我这种初学者来说,这一步其实蛮重要的)。另外说下做最短路问题的一些容易出错的地方。1、要小心重边,就是题目会给你一些边类似于2 4 5,2 4 3;这种边和权值的。2、要原创 2015-08-22 22:31:42 · 6077 阅读 · 0 评论 -
二分检索的多种应用
其实,二分法真的不那么简单,尤其是二分法的各个变种。 最最简单的二分法,就是从一个排好序的数组之查找一个key值。 如下面的程序:int search(int *arr, int n, int key){ int left = 0, right = n-1; while(left<=right) { int mid = left + ((right - left)原创 2015-07-31 21:25:57 · 772 阅读 · 0 评论 -
并查集详解,不会的同学可以来瞅瞅,转载的,不过加了一些自己的理解。
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2015-07-30 08:40:58 · 882 阅读 · 0 评论 -
C语言qsort和C++sort的用法小结和区别比较
第一项: qsort:(只是些概念,了解一下就可以)基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法: void qs原创 2015-07-27 21:26:27 · 1473 阅读 · 0 评论