From 3deb75f3f10180cc91106d7ea488aa0c2e500364 Mon Sep 17 00:00:00 2001 From: ranwenjie Date: Wed, 8 Sep 2021 14:00:57 +0800 Subject: [PATCH] update --- 9 Algorithms Job Interview/2 链表.md | 21 ++++++++++++-- 9 Algorithms Job Interview/4 数值问题.md | 7 +++-- .../剑指offer/README.md | 28 +++++++++---------- 9 Algorithms Job Interview/编程之美/README.md | 16 +++++------ 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/9 Algorithms Job Interview/2 链表.md b/9 Algorithms Job Interview/2 链表.md index 0aebc1a..d4d16a1 100644 --- a/9 Algorithms Job Interview/2 链表.md +++ b/9 Algorithms Job Interview/2 链表.md @@ -8,6 +8,12 @@ * 2个链表相交 * 2个链表合并 +常用解题思路 + +* 双指针 +* 3指针 +* 快慢指针 + ## 判断俩个链表是否相交 @@ -60,8 +66,18 @@ Node * sort_link_list_increasing_order (Node *pheader): ## 给定单链表,检测是否有环。 - -使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。 + + +``` +int isLinkCicle(Link *head); +``` + +解题思路 + +1. 暴力 +2. 空间换时间,用一个HashMap +3. 快慢指针: 使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。 + 类似的题有: @@ -82,6 +98,7 @@ p->next=NULL。此时,原单链表可以看作两条单链表,一条从head 于是运用题二的方法,我们找到它们的第一个交点即为所求。 + ## 删除链表中的p节点 只给定单链表中某个结点p(并非最后一个结点,即p->next!=NULL)指针,删除该结点。 diff --git a/9 Algorithms Job Interview/4 数值问题.md b/9 Algorithms Job Interview/4 数值问题.md index e190fc8..b91be5c 100644 --- a/9 Algorithms Job Interview/4 数值问题.md +++ b/9 Algorithms Job Interview/4 数值问题.md @@ -15,10 +15,10 @@ 分析: 1. 不能使用循环,那就用递归 -2. 递归需要终止递归的条件判断语句,这里也不能用if,想其他办法,可以使用 &&逻辑与 运算符(在n>0条件满足是,才会指向后面的递归语句 +2. 递归需要终止递归的条件判断语句,这里也不能用if,想其他办法,可以使用 &&逻辑与 运算符(在n>0条件满足是,才会指向后面的递归语句) ``` -int (n){ +int sum(n){ int sum=0; (n>0) && sum=n+factorial(n-1) return sum; @@ -28,6 +28,9 @@ int (n){ ## 大数阶乘(factorial) +> 阶乘 n*(n-1)*(n-2)*...*1 + +主要考虑算出来的结果肯定会大于int表达的范围,这时候怎么处理? ``` int factorial(n){ diff --git a/9 Algorithms Job Interview/剑指offer/README.md b/9 Algorithms Job Interview/剑指offer/README.md index 9f556e3..f4920c6 100644 --- a/9 Algorithms Job Interview/剑指offer/README.md +++ b/9 Algorithms Job Interview/剑指offer/README.md @@ -56,7 +56,7 @@ long long sum(unsigned int n); ``` -int sum(int,int) +int sum(int a,int b ``` @@ -72,20 +72,6 @@ int ugly(int n) -### 把字符串转换成整数 - -比如 "12343567754" -> 12343567754 - - -`NULL,空串,正负号,溢出` - - -``` -int strToInt(char str); -``` - - - # 字符串 @@ -102,6 +88,18 @@ void replace_blank(char *str); ``` +### 把字符串转换成整数 + +比如 "12343567754" -> 12343567754 + + +`NULL,空串,正负号,溢出` + + +``` +int strToInt(char str); +``` + ### 第一个只出现一次的字符 diff --git a/9 Algorithms Job Interview/编程之美/README.md b/9 Algorithms Job Interview/编程之美/README.md index 902db80..644f8a3 100644 --- a/9 Algorithms Job Interview/编程之美/README.md +++ b/9 Algorithms Job Interview/编程之美/README.md @@ -8,17 +8,18 @@ 4. 数学之趣: 一些数学问题 《剑指offer》中已经出现的题目先不写了 - -### 游戏之乐 - -#### + +# 游戏之乐 -### 数字之魅 + + +# 数字之魅 #### 二进制数中1的个数 + #### 阶乘 @@ -74,7 +75,7 @@ -### 结构之法 +# 结构之法 #### 字符串移位包含的问题 @@ -110,8 +111,7 @@ - -### 数学之趣 +# 数学之趣 ####