update dir

This commit is contained in:
ranwenjie
2021-08-02 13:09:06 +08:00
parent 5ed1c8b165
commit 3315c86c10
15 changed files with 41 additions and 36 deletions
+8 -3
View File
@@ -4,13 +4,19 @@
ZipList 压缩列表 redis 中的 sset(有序集合) 使用跳表来实现,为什么不是用红黑树,而是跳表实现sset,带着这样的疑问,有了本文。
## 跳表理解
## 理解
有哪些应用场景?
## 跳表的结构
#### 为什么使用
## 结构
@@ -19,7 +25,6 @@ ZipList 压缩列表 redis 中的 sset(有序集合) 使用跳表来实现,为
## sset 为什么使用 跳表
@@ -8,7 +8,7 @@
* 2个链表合并
#### 判断俩个链表是否相交
## 判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。
@@ -18,16 +18,17 @@
2.如果需要求出俩个链表相交的第一个节点列?
#### 输出两个非降序链表的并集
## 输出两个非降序链表的并集
请修改append函数,利用这个函数实现:
两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5 。另外只能输出结果,不能修改两个链表的数据。
#### 输出链表中倒数第k个结点
## 输出链表中倒数第k个结点
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
@@ -36,7 +37,7 @@ struct ListNode
};
#### 链表排序
## 链表排序
Given a head pointer pointing to a linked list ,please write a function that sort the list
in increasing order. You are not allowed to use temporary array or memory copy (微软面试题)
@@ -52,7 +53,7 @@ Node * sort_link_list_increasing_order (Node *pheader):
```
#### 给定单链表,检测是否有环。
## 给定单链表,检测是否有环。
使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。
@@ -75,7 +76,7 @@ p->next=NULL。此时,原单链表可以看作两条单链表,一条从head
于是运用题二的方法,我们找到它们的第一个交点即为所求。
#### 删除链表中的p节点
## 删除链表中的p节点
只给定单链表中某个结点p(并非最后一个结点,即p->next!=NULL)指针,删除该结点。
@@ -86,13 +87,13 @@ p->next=NULL。此时,原单链表可以看作两条单链表,一条从head
接下来将p中的数据copy入q中,然后再将要插入的数据记录在p中。都可以做到0(1)复杂度
#### 链表反转
## 链表反转
三个指针,遍历一遍(0(n)复杂度
#### 复杂链表的复制
## 复杂链表的复制
题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,
还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下:
@@ -110,7 +111,7 @@ p->next=NULL。此时,原单链表可以看作两条单链表,一条从head
#### 找出两个链表的第一个公共结点
## 找出两个链表的第一个公共结点
题目:两个单向链表,找出它们的第一个公共结点。链表的结点定义为:
```
@@ -131,7 +132,7 @@ struct ListNode
#### 从尾到头输出链表
## 从尾到头输出链表
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
@@ -147,7 +148,7 @@ struct ListNode{
思路三: 递归实现,将printf语句放在递归调用后面。果然妙极。。
#### 在O(1)时间内删除链表结点
## 在O(1)时间内删除链表结点
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:
```
@@ -165,25 +166,26 @@ void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);
保存下一个节点的值tmp,删除下一个节点,当前节点=tmp
#### 将两链表中data值相同的结点删除
## 将两链表中data值相同的结点删除
有双向循环链表结点定义为:
```
struct node{
int data;
struct node *front,*next;
};
````
```
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除。
#### 链表和数组的区别在哪里?
## 链表和数组的区别在哪里?
分析:主要在基本概念上的理解。
但是最好能考虑的全面一点,现在公司招人的竞争可能就在细节上产生,
@@ -191,3 +193,16 @@ struct node{
@@ -1,5 +1,5 @@
##堆和栈
# 堆和栈
栈的数据结构
+3
View File
@@ -100,6 +100,9 @@
[九度OJ](http://ac.jobdu.com/index.php)
[leetcode 题目](https://leetcode.com/)
-13
View File
@@ -1,13 +0,0 @@
题目来自[leetcode](https://leetcode.com/)
[LeetCode题解C++版](https://github.com/soulmachine/leetcode), 151道题完整版
#### Minimum Height Trees
#### Additive Number
-5
View File
@@ -1,5 +0,0 @@
题目来自 [九度OJ](http://ac.jobdu.com/index.php)