• 普通人如何理解递归算法

    普通人如何理解递归算法

    RainNight 2022-05-8 算法集

    143°

    当人们提到“递归”一词,不知道如何理解它,也有人会问递归和迭代有什么区别?首先可以从定义上入手来分析,递归是自身调用自身的函数进行循环、遇到满足终止条件的情况时逐层返回来结束。迭代则是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。 ![file](/static/upload/bigpic/20220508/1652004978975238087.jpeg) ## 如何实现递归算法的设计方法? --- 递归算法即是一种有效的算法设
  • 如何理解分治思想

    如何理解分治思想

    RainNight 2022-05-3 算法集

    139°

    分治思想就是把复杂问题、拆分成诺干个相同的小问题,然后将问题逐步解决掉,合并到一起的过程,就是分治思想。简单来说,分治思想就是“分而治之”,将复杂问题拆分成诺干个相同的小问题进行解决。 ![file](/static/upload/bigpic/20220503/1651565891394792604.png) 那么如何实现分治思维去解决问题呢?首先分解的问题要与整个问题的规则要一致,否则就无法使用分治去解决问题,总体可总结为: * 分解:将原问题分解为若干个规模较小,相对独立,与原问题形式相同
  • 如何深度理解排序算法(一)

    如何深度理解排序算法(一)

    RainNight 2022-04-22 算法集

    148°

    对于算法的理解、可以看成解决问题的过程和方式、无论算法是好还是坏,它都是一个独立的个体。在众多算法中,排序算法是经常被用到,或者在以往的生活或者面试当中会被提到的,所以理解和学会排序算法是非常重要的。 ![file](/static/upload/bigpic/20220422/1650636810943993926.png) 还记得上小学的时候,老师会叫我们按照身高高低,进行低的在前高的在后的原则、进行排队放学回家。那么大家思考下,如何排队是最有效的呢?! ![file](/static/up
  • 什么是算法?

    什么是算法?

    RainNight 2022-04-19 算法集

    280°

    当人们提到“算法”一词,往往就会把它们当成专属于“人工智能”的范畴,很多专业的计算机人士也是,提起算法就头疼,不知道如何学习算法,慢慢的对算法就会失去兴趣,算法不仅仅是计算机行业特有的,在我们的生活中也处处存在着算法,算法是专注于解决问题的过程和方法。 既然提到了算法是解决问题的方法,哪方法也是有好有坏的,算法是在特定问题下解决问题的方法,证明一个算法的好坏,就要看它的时间复杂度和空间复杂度。 通过一个实例来说明算法的好坏,假如李四是班长,老师叫李四统计下本班的人数是多少? 李四非常自信的一个、
  • vagrant解决 Warning: Authentication failure. Retrying

    vagrant解决 Warning: Authentication failure. Retrying

    RainNight 2022-04-18 PHP

    133°

    # vagrant解决 Warning: Authentication failure. Retrying ![file](/static/upload/bigpic/20220419/1650302391728431415.png) 这种问题是登陆用户名和密码验证失败造成的,只需要在启动时加入以下内容即可scripts\homestead.rb文件 Configure The Box 中加入以下语句即可 ``` config.ssh.username = "vagrant" config.ss
  • Laravel 文件存储删除目录中的所有文件

    Laravel 文件存储删除目录中的所有文件

    RainNight 2022-04-18 PHP

    131°

    # Laravel 文件存储删除目录中的所有文件 有没有办法删除特定目录下的所有文件?我正在try 清除我在storage\app\background中创建的文件夹Background中的 所有文件,但在docs中似乎没有方法删除所有文件。 ``` Storage::delete('backgrounds\*.jpg'); ``` 我不认为这是解决这个问题的最好办法。但我解决了我的问题 ``` use Illuminate\Filesystem\Filesystem; ``` 然后启动新实例
  • 如何理解算法的时间和空间复杂度

    如何理解算法的时间和空间复杂度

    RainNight 2022-01-20 数据结构与算法

    494°

    ## 如何理解算法的时间和空间复杂度 --- 算法(Algoritthm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 具体如何衡量不同算法之间的优劣呢? 主要还是从算法所占的【时间】和【空间】两个维度去考量。 * 时间维度:是指执行当前算法所消耗的时间,我们通常用【时间复杂度】来描述。 * 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用【空间复杂度】来描述。 因此,评价一个算法的效率
  • 节点

    节点

    RainNight 2022-01-18 数据结构与算法

    381°

    ## 节点 --- 在有些情况下,存储数据的内存分配不能位于连续的内存块中。 所以接受指针的帮助,其中数据和数据元素的下一个位置的地址也被存储。 所以从当前数据元素的值中知道下一个数据元素的地址。通常这样的结构被称为指针。 但在Python中,将它们称为节点。 节点是各种其他数据结构链表和树在python中处理的基础。 ```py class daynames: def __init__(self,dataval=None): self.dataval = dataval self.nextva
  • 双向链表

    双向链表

    RainNight 2022-01-18 数据结构与算法

    422°

    ## 双向链表 --- 在前面的章节中已经看到并学习了链表,但在前面只是进行介绍和入门。 在本章中,我们看到另一种链接列表,可以向前和向后移动遍历。 这种链表称为双向链表。 以下是双向链表的特点。 * 双向链表包含第一个和最后一个的链接元素。 * 每个链接都有一个数据字段和两个称为`next`和`prev`的链接字段。 * 每个链接都使用其下一个链接与其下一个链接链接。 * 每个链接都使用其上一个链接与之前的链接链接。 * 最后一个链接将链接作为空来标记列表的结尾。 ### **创建双向链表**
  • 链表

    链表

    RainNight 2022-01-18 数据结构与算法

    443°

    ## 链表 --- 链表是一系列数据元素,通过链接连接在一起。 每个数据元素都以指针的形式包含到另一个数据元素的连接。 Python在其标准库中没有链接列表。 我们使用前一章讨论的节点概念来实现链表的概念。 我们已经知道如何创建节点类以及如何遍历节点的元素。 在本章中,将学习链表的类型:单链表。 在这种类型的数据结构中,任何两个数据元素之间只有一个链接。 创建一个链表并使用一些方法来插入,更新和从列表中移除元素。 ### **创建链表** --- Python是通过节点类来创建链表的。创建一个`
  • 快速理解kmp算法

    快速理解kmp算法

    RainNight 2022-01-17 数据结构与算法

    435°

    ## 暴力匹配算法 --- 假设有这样一个问题:有一个文本串 haystack,和一个模式串 needle ,现在要查找 needle 在 haystack 中的位置,怎么查找呢? ``` haystack = "hello,world" # 文本串 needle = "ll " # 模式串 ``` 如果用暴力匹配的思路,并假设现在文本串haystack匹配到i位置,模式串needle匹配到j位置,则有: * 如果当前字母匹配成功,`haystack[i]== needle[j]`,则I++,j
  • 【求知=>算法】删除链表中的节点

    【求知=>算法】删除链表中的节点

    RainNight 2022-01-17 求知=>算法

    400°

    ## 删除链表中的节点 --- 请编写一个函数,用于 **删除单链表中某个特定节点** 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 **要被删除的节点** 。 题目数据保证需要删除的节点 **不是末尾节点** 。 **示例 1:** ![file](/static/upload/bigpic/20220117/1642433823784116801.jpg) > 输入:head = [4,5,1,9], node = 5 > 输出:[4,1,9] > 解释:指定链表
Collect from 雨夜的博客 雨夜的博客