From acecb36058273b69a6f61a0c5f08f638269c93c6 Mon Sep 17 00:00:00 2001 From: ranwenjie Date: Mon, 2 Aug 2021 15:21:47 +0800 Subject: [PATCH] update dir --- 9 Algorithms Job Interview/1 字符串.md | 50 ++++++++++++----------- 9 Algorithms Job Interview/2 链表.md | 2 +- 9 Algorithms Job Interview/91 系统设计.md | 26 ++++++------ 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/9 Algorithms Job Interview/1 字符串.md b/9 Algorithms Job Interview/1 字符串.md index bb05c37..c77468f 100644 --- a/9 Algorithms Job Interview/1 字符串.md +++ b/9 Algorithms Job Interview/1 字符串.md @@ -366,29 +366,6 @@ char *trim_number(char *source){ -## 字符串原地压缩 - -题目描述:“abeeeeegaaaffa" 压缩为 "abe5ag3f2a",请编程实现。 - -这道题需要注意: -1. 单个字符不压缩 -2. 注意考虑压缩后某个字符个数是多位数(超过10个) -3. 原地压缩最麻烦的地方就是数据移动 - - -这是使用2个指针,一前一后,如果不相等,都往前移动一位;如果相等,后一位变为数字2,且移动后面的指针一位,任然相等则数字加1,不相等 - - -``` -char *compress(const char *src,char *dest){ - -} -``` - -上面的压缩算法可以看到,压缩算法的`效率`验证依赖`给定字符串的特性`,如果'aaaaaaaa....aaa' 这样特征的字符串,使用上面的压缩算法,压缩率接近100%,相反,可能会的0%的压缩率。 - - - ## 字符串中找出连续最长的数字串 @@ -456,7 +433,6 @@ int longest_continuious_number(const char *input,char *output){ ``` - ## 求最大连续递增数字串 如“ads3sl456789DF3456ld345AA”中的“456789”就是所求。这道题在上一道题目的基础上增加了数字要递增的条件。思路跟上面差不多,碰到不递增的数字就相当于第二个数字串了。 @@ -520,6 +496,32 @@ char *substr_count(const char *src, const char *substr, int *count) + +## 字符串原地压缩 + +题目描述:“abeeeeegaaaffa" 压缩为 "abe5ag3f2a",请编程实现。 + +这道题需要注意: +1. 单个字符不压缩 +2. 注意考虑压缩后某个字符个数是多位数(超过10个) +3. 原地压缩最麻烦的地方就是数据移动 + + +这是使用2个指针,一前一后,如果不相等,都往前移动一位;如果相等,后一位变为数字2,且移动后面的指针一位,任然相等则数字加1,不相等 + + +``` +char *compress(const char *src,char *dest){ + +} +``` + +上面的压缩算法可以看到,压缩算法的`效率`验证依赖`给定字符串的特性`,如果'aaaaaaaa....aaa' 这样特征的字符串,使用上面的压缩算法,压缩率接近100%,相反,可能会的0%的压缩率。 + + + + + ## 请编写能直接实现strstr()函数功能的代码。 > strstr(str1,str2) 判断str2是否是str1的子串。 diff --git a/9 Algorithms Job Interview/2 链表.md b/9 Algorithms Job Interview/2 链表.md index 1360eb9..900e73b 100644 --- a/9 Algorithms Job Interview/2 链表.md +++ b/9 Algorithms Job Interview/2 链表.md @@ -162,7 +162,7 @@ struct ListNode{ }; //函数的声明如下: -void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted); +void deleteNode(ListNode* pListHead, ListNode* pToBeDeleted); ``` diff --git a/9 Algorithms Job Interview/91 系统设计.md b/9 Algorithms Job Interview/91 系统设计.md index 84e8475..6dfba5d 100644 --- a/9 Algorithms Job Interview/91 系统设计.md +++ b/9 Algorithms Job Interview/91 系统设计.md @@ -1,28 +1,27 @@ -#### 要求设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。 +## 要求设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。 - -#### 设计一个系统处理词语搭配问题 +## 设计一个系统处理词语搭配问题 设计一个系统处理词语搭配问题,比如说 中国 和人民可以搭配, 则中国人民 人民中国都有效。要求: -*系统每秒的查询数量可能上千次; -*词语的数量级为10W; -*每个词至多可以与1W个词搭配 +* 系统每秒的查询数量可能上千次; +* 词语的数量级为10W; +* 每个词至多可以与1W个词搭配 当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。 -#### 任务调度 +## 任务调度 系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行 - (1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。 + (1)不考虑系统并行性,设计一个函数`(Task *Ptask,int Task_num)`不考虑并行度,最快的方法完成所有任务。 (2)考虑并行度,怎么设计 ``` @@ -41,14 +40,13 @@ ``` -#### 设计一种内存管理算法 +## 设计一种内存管理算法 相关的问题: -##### 请编写实现malloc()内存分配函数功能一样的代码 - -##### 用C语言实现函数memmove()函数 +* 请编写实现malloc()内存分配函数功能一样的代码 +* 用C语言实现函数memmove()函数 ``` void * memmove(void *dest, const void *src, size_t n) @@ -61,11 +59,11 @@ memmove()函数的功能是拷贝src所指的内存内容前n个字节到dest所 -#### A向B发邮件,B收到后读取并发送收到,但是中间可能丢失了该邮件,怎么设计一种最节省的方法,来处理丢失问题。 +## A向B发邮件,B收到后读取并发送收到,但是中间可能丢失了该邮件,怎么设计一种最节省的方法,来处理丢失问题。 -#### 设计一种算法求出算法复杂度 +## 设计一种算法求出算法复杂度