算法
Danielzph
想要真实与快乐而已。
展开
-
深度优先搜索与广度优先搜索(一)
1.深度优先搜索-dfs深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。算法实现:栈、递归例题:LC 104 二叉树的最大深度# Definition for a b原创 2021-08-27 15:41:24 · 247 阅读 · 2 评论 -
python 实现常见排序算法--快速排序
排序算法的复杂度总结表几种常见排序算法的特点:(图片转载于link)快速排序时间复杂度为O(nlog2n)1) 快速排序的实现(Quick Sort)快速排序的时间复杂度是 O(nlogn),并且它在时间复杂度为 O(nlogn)级的几种排序算法中,大多数情况下效率更高,所以快速排序的应用非常广泛。再加上快速排序所采用的分治思想非常实用,使得快速排序深受面试官的青睐,所以掌握快速排序的思想尤为重要。快速排序的方法:1.从数组中取出一个数,称之为基数(pivot)2.遍历数组,将比基数大的数原创 2021-08-24 15:36:19 · 240 阅读 · 0 评论 -
某为大数据开发一面算法题
题目大意:输入一个N ×\times× M 的矩阵,从左上走到右下最大的元素和。思路:代码:原创 2021-08-07 10:00:48 · 114 阅读 · 0 评论 -
动态规划总结(持续更新)
1.概念动态规划不是某一种具体的算法,而是一种算法思想:若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。2.与其他相似算法的区别(来自leetcode)(1)分治解决分治问题的时候,思路就是想办法把问题的规模减小,有时候减小一个,有时候减小一半,然后将每个小问题的解以及当前的情况组合起来得出最终的结果。例如归并排序和快速排序,归并排序将要排序的数组平均地分成两半,快速排序将数组随机地分成两半。然后不断地对它们递归地进行处理。这里存在有最优的子结构,即原数组原创 2021-08-09 20:09:46 · 351 阅读 · 0 评论 -
python 实现常见排序算法--冒泡排序
常见算法题1.数组2.字符串3.堆、栈与队列4.链表5.哈希与映射6.树7.排序几种常见排序算法的特点:(图片转载于link)1)冒泡排序(Bubble Sort)比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。2)8.动态规划9.图论10.数学问题转载请注明:Daniel的原创 2021-08-18 23:55:33 · 187 阅读 · 0 评论