-
RainNight
2022-01-18
数据结构与算法
695°
## 双向链表
---
在前面的章节中已经看到并学习了链表,但在前面只是进行介绍和入门。 在本章中,我们看到另一种链接列表,可以向前和向后移动遍历。 这种链表称为双向链表。 以下是双向链表的特点。
* 双向链表包含第一个和最后一个的链接元素。
* 每个链接都有一个数据字段和两个称为`next`和`prev`的链接字段。
* 每个链接都使用其下一个链接与其下一个链接链接。
* 每个链接都使用其上一个链接与之前的链接链接。
* 最后一个链接将链接作为空来标记列表的结尾。
### **创建双向链表**
-
RainNight
2022-01-18
数据结构与算法
696°
## 链表
---
链表是一系列数据元素,通过链接连接在一起。 每个数据元素都以指针的形式包含到另一个数据元素的连接。 Python在其标准库中没有链接列表。 我们使用前一章讨论的节点概念来实现链表的概念。 我们已经知道如何创建节点类以及如何遍历节点的元素。 在本章中,将学习链表的类型:单链表。 在这种类型的数据结构中,任何两个数据元素之间只有一个链接。 创建一个链表并使用一些方法来插入,更新和从列表中移除元素。
### **创建链表**
---
Python是通过节点类来创建链表的。创建一个`
-
RainNight
2022-01-17
数据结构与算法
659°
## 暴力匹配算法
---
假设有这样一个问题:有一个文本串 haystack,和一个模式串 needle
,现在要查找 needle 在 haystack 中的位置,怎么查找呢?
```
haystack = "hello,world" # 文本串
needle = "ll " # 模式串
```
如果用暴力匹配的思路,并假设现在文本串haystack匹配到i位置,模式串needle匹配到j位置,则有:
* 如果当前字母匹配成功,`haystack[i]== needle[j]`,则I++,j
-
RainNight
2022-01-17
求知=>算法
613°
## 删除链表中的节点
---
请编写一个函数,用于 **删除单链表中某个特定节点** 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 **要被删除的节点** 。
题目数据保证需要删除的节点 **不是末尾节点** 。
**示例 1:**

> 输入:head = [4,5,1,9], node = 5
> 输出:[4,1,9]
> 解释:指定链表
-
RainNight
2022-01-15
求知=>算法
644°
## 最长公共前缀
---
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 `“”`。
示例 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
求知=>算法
558°
## 外观数列
---
给定一个正整数 `n `,输出外观数列的第 `n` 项。
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
你可以将其视作是由递归公式定义的数字字符串序列:
* `countAndSay(1) = “1”`
* `countAndSay(n)` 是对 `countAndSay(n-1)` 的描述,然后转换成另一个数字字符串。
前五项如下:
> 1.
1
> 2.
11
> 3.
21
> 4.
1211
> 5.
111221
> 第一项是
-
RainNight
2022-01-15
求知=>算法
582°
## 实现 strStr()
---
实现 `strStr()`函数。
给你两个字符串`haystack` 和 `needle` ,请你在 `haystack` 字符串中找出 `needle` 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回`-1` 。
**说明:**
当 `needle` 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 `needle` 是空字符串时我们应当返回 0 。这与 C 语言的`strstr()`以及 Java 的 `
-
RainNight
2022-01-14
Python
619°
## startswith()方法的使用
---
Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
startswith()方法语法:
> str.startswith(str, beg=0,end=len(string));
> str -- 检测的字符串。
> strbeg -- 可选参数用于设置字符串检测的起始位置。
> strend -- 可选参数用
-
RainNight
2022-01-11
求知=>算法
536°
## 字符串转换整数 (atoi)
---
请你来实现一个`myAtoi(string s)`函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
函数`myAtoi(string s)` 的算法如下:
* 读入字符串并丢弃无用的前导空格
* 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
* 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余
-
RainNight
2022-01-10
求知=>算法
517°
## 验证回文串
---
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
**说明:**本题中,我们将空字符串定义为有效的回文串。
**示例 1:**
> 输入: “A man, a plan, a canal: Panama”
> 输出: true
> 解释:”amanaplanacanalpanama” 是回文串
**示例 2:**
> 输入: “race a car”
> 输出: false
> 解释:”raceacar” 不是回文串
**提示:**
*