1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  • 如何理解算法的时间和空间复杂度

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

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

    38°

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

    节点

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

    34°

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

    双向链表

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

    32°

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

    链表

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

    40°

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

    快速理解kmp算法

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

    83°

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

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

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

    66°

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

    【求知=>算法】最长公共前缀

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

    79°

    ## 最长公共前缀 --- 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 `“”`。 示例 1: > 输入:strs = [“flower”,”flow”,”flight”] > 输出:”fl” 示例 2: > 输入:strs = [“dog”,”racecar”,”car”] > 输出:”” > 解释:输入不存在公共前缀。 提示: * `1 <= strs.length <= 200` * `0 <= strs[I].length <= 200` * `st
  • 【求知=>算法】外观数列

    【求知=>算法】外观数列

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

    69°

    ## 外观数列 --- 给定一个正整数 `n `,输出外观数列的第 `n` 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: * `countAndSay(1) = “1”` * `countAndSay(n)` 是对 `countAndSay(n-1)` 的描述,然后转换成另一个数字字符串。 前五项如下: > 1. 1 > 2. 11 > 3. 21 > 4. 1211 > 5. 111221 > 第一项是
  • 【求知=>算法】实现 strStr()

    【求知=>算法】实现 strStr()

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

    72°

    ## 实现 strStr() --- 实现 `strStr()`函数。 给你两个字符串`haystack` 和 `needle` ,请你在 `haystack` 字符串中找出 `needle` 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回`-1` 。 **说明:** 当 `needle` 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 `needle` 是空字符串时我们应当返回 0 。这与 C 语言的`strstr()`以及 Java 的 `
  • startswith()方法的使用

    startswith()方法的使用

    RainNight 2022-01-14 Python

    64°

    ## startswith()方法的使用 --- Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。 startswith()方法语法: > str.startswith(str, beg=0,end=len(string)); > str -- 检测的字符串。 > strbeg -- 可选参数用于设置字符串检测的起始位置。 > strend -- 可选参数用
Collect from 雨夜的博客 雨夜的博客