Skip to content

Commit 756f1d8

Browse files
committed
auto commit
1 parent 26444d6 commit 756f1d8

File tree

3 files changed

+74
-32
lines changed

3 files changed

+74
-32
lines changed

notes/HTTP.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@
6363

6464
## Web 基础
6565

66-
- HTTP(HyperText Transfer Protocol,超文本传输协议)
67-
- WWW(World Wide Web)的三种技术:HTML、HTTP、URL
66+
- HTTP(HyperText Transfer Protocol,超文本传输协议)
67+
- WWW(World Wide Web)的三种技术:HTML、HTTP、URL
6868
- RFC(Request for Comments,征求修正意见书),互联网的设计文档。
6969

7070
## URL
7171

7272
- URI(Uniform Resource Indentifier,统一资源标识符)
7373
- URL(Uniform Resource Locator,统一资源定位符)
74-
- URN(Uniform Resource Name,统一资源名称),例如 urn:isbn:0-486-27557-4
74+
- URN(Uniform Resource Name,统一资源名称),例如 urn:isbn:0-486-27557-4。
7575

7676
URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。
7777

notes/剑指 offer 题解.md

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2498,6 +2498,8 @@ public double countProbability(int n, int s) {
24982498

24992499
## 题目描述
25002500

2501+
[NowCoder](https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4?tpId=13&tqId=11198&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2502+
25012503
五张牌,其中大小鬼为癞子,牌面大小为 0。判断是否能组成顺子。
25022504

25032505
## 解题思路
@@ -2510,18 +2512,18 @@ public boolean isContinuous(int[] nums) {
25102512
for (int num : nums) if (num == 0) cnt++;
25112513
for (int i = cnt; i < nums.length - 1; i++) {
25122514
if (nums[i + 1] == nums[i]) return false;
2513-
int interval = nums[i + 1] - nums[i] - 1;
2514-
if (interval > cnt) return false;
2515-
cnt -= interval;
2515+
cnt -= nums[i + 1] - nums[i] - 1;
25162516
}
2517-
return true;
2517+
return cnt >= 0;
25182518
}
25192519
```
25202520

25212521
# 62. 圆圈中最后剩下的数
25222522

25232523
## 题目描述
25242524

2525+
[NowCoder](https://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6?tpId=13&tqId=11199&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2526+
25252527
让小朋友们围成一个大圈。然后,他随机指定一个数 m,让编号为 0 的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续 0...m-1 报数 .... 这样下去 .... 直到剩下最后一个小朋友,可以不用表演。
25262528

25272529
## 解题思路
@@ -2540,6 +2542,8 @@ public int LastRemaining_Solution(int n, int m) {
25402542

25412543
## 题目描述
25422544

2545+
[Leetcode](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/)
2546+
25432547
可以有一次买入和一次卖出,买入必须在前。求最大收益。
25442548

25452549
## 解题思路
@@ -2548,26 +2552,34 @@ public int LastRemaining_Solution(int n, int m) {
25482552

25492553
```java
25502554
public int maxProfit(int[] prices) {
2555+
if (prices == null || prices.length == 0) return 0;
25512556
int n = prices.length;
2552-
if(n == 0) return 0;
25532557
int soFarMin = prices[0];
2554-
int max = 0;
2555-
for(int i = 1; i < n; i++) {
2556-
if(soFarMin > prices[i]) soFarMin = prices[i];
2557-
else max = Math.max(max, prices[i] - soFarMin);
2558+
int maxProfit = 0;
2559+
for (int i = 1; i < n; i++) {
2560+
soFarMin = Math.min(soFarMin, prices[i]);
2561+
maxProfit = Math.max(maxProfit, prices[i] - soFarMin);
25582562
}
2559-
return max;
2563+
return maxProfit;
25602564
}
25612565
```
25622566

25632567
# 64. 求 1+2+3+...+n
25642568

25652569
## 题目描述
25662570

2571+
[NowCoder](https://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1?tpId=13&tqId=11200&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2572+
25672573
求 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句(A?B:C)。
25682574

25692575
## 解题思路
25702576

2577+
使用递归解法最重要的是指定返回条件,但是本题无法直接使用 if 语句来指定返回条件。
2578+
2579+
条件与 && 具有短路原则,即在第一个条件语句为 false 的情况下不会去执行第二个条件语句。利用这一特性,将递归的返回条件取非然后作为 && 的第一个条件语句,递归的主体转换为第二个条件语句,那么当递归的返回条件为 true 的情况下就不会执行递归的主体部分,递归返回。
2580+
2581+
以下实现中,递归的返回条件为 n <= 0,取非后就是 n > 0,递归的主体部分为 sum += Sum_Solution(n - 1),转换为条件语句后就是 (sum += Sum_Solution(n - 1)) > 0。
2582+
25712583
```java
25722584
public int Sum_Solution(int n) {
25732585
int sum = n;
@@ -2578,23 +2590,30 @@ public int Sum_Solution(int n) {
25782590

25792591
# 65. 不用加减乘除做加法
25802592

2593+
## 题目描述
2594+
2595+
[NowCoder](https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2596+
2597+
写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、\*、/ 四则运算符号。
2598+
25812599
## 解题思路
25822600

25832601
a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。
25842602

25852603
递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
25862604

25872605
```java
2588-
public int Add(int num1, int num2) {
2589-
if(num2 == 0) return num1;
2590-
return Add(num1 ^ num2, (num1 & num2) << 1);
2606+
public int Add(int num1,int num2) {
2607+
return num2 == 0 ? num1 : Add(num1 ^ num2, (num1 & num2) << 1);
25912608
}
25922609
```
25932610

25942611
# 66. 构建乘积数组
25952612

25962613
## 题目描述
25972614

2615+
[NowCoder](https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?tpId=13&tqId=11204&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2616+
25982617
给定一个数组 A[0, 1,..., n-1], 请构建一个数组 B[0, 1,..., n-1], 其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。不能使用除法。
25992618

26002619
## 解题思路
@@ -2615,6 +2634,22 @@ public int[] multiply(int[] A) {
26152634

26162635
# 67. 把字符串转换成整数
26172636

2637+
## 题目描述
2638+
2639+
[NowCoder](https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
2640+
2641+
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0。
2642+
2643+
```html
2644+
Iuput:
2645+
+2147483647
2646+
1a33
2647+
2648+
Output:
2649+
2147483647
2650+
0
2651+
```
2652+
26182653
## 解题思路
26192654

26202655
```java
@@ -2640,12 +2675,15 @@ public int StrToInt(String str) {
26402675

26412676
<div align="center"> <img src="../pics//293d2af9-de1d-403e-bed0-85d029383528.png" width="300"/> </div><br>
26422677

2678+
[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/)
2679+
26432680
二叉查找树中,两个节点 p, q 的公共祖先 root 满足 p.val <= root.val && root.val <= q.val,只要找到满足这个条件的最低层节点即可。换句话说,应该先考虑子树的解而不是根节点的解,二叉树的后序遍历操作满足这个特性。在本题中我们可以利用后序遍历的特性,先在左右子树中查找解,最后再考虑根节点的解。
26442681

26452682
```java
26462683
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
2647-
if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q);
2648-
if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q);
2684+
if (root == null) return root;
2685+
if (root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q);
2686+
if (root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q);
26492687
return root;
26502688
}
26512689
```
@@ -2654,6 +2692,8 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
26542692

26552693
<div align="center"> <img src="../pics//37a72755-4890-4b42-9eab-b0084e0c54d9.png" width="300"/> </div><br>
26562694

2695+
[Leetcode : 236. Lowest Common Ancestor of a Binary Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/)
2696+
26572697
在左右子树中查找两个节点的最低公共祖先,如果在其中一颗子树中查找到,那么就返回这个解,否则可以认为根节点就是最低公共祖先。
26582698

26592699
```java

notes/计算机网络.md

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,19 @@
6161

6262
网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。
6363

64-
<div align="center"> <img src="../pics//network-of-networks.gif"/> </div><br>
64+
<div align="center"> <img src="../pics//network-of-networks.gif" width=""/> </div><br>
6565

6666
## ISP
6767

6868
互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。
6969

70-
<div align="center"> <img src="../pics//46cec213-3048-4a80-aded-fdd577542801.jpg"/> </div><br>
70+
<div align="center"> <img src="../pics//46cec213-3048-4a80-aded-fdd577542801.jpg" width=""/> </div><br>
7171

72-
目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为主干 ISP、地区 ISP 和本地 ISP。
72+
目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。
7373

7474
互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。
7575

76-
<div align="center"> <img src="../pics//Technology-ComputerNetworking-Internet-ISPs.png"/> </div><br>
76+
<div align="center"> <img src="../pics//Technology-ComputerNetworking-Internet-ISPs.png" width=""/> </div><br>
7777

7878

7979
## 主机之间的通信方式
@@ -82,11 +82,11 @@
8282

8383
2. 对等(P2P):不区分客户和服务器。
8484

85-
<div align="center"> <img src="../pics//2ad244f5-939c-49fa-9385-69bc688677ab.jpg"/> </div><br>
85+
<div align="center"> <img src="../pics//2ad244f5-939c-49fa-9385-69bc688677ab.jpg" width=""/> </div><br>
8686

8787
## 电路交换与分组交换
8888

89-
<div align="center"> <img src="../pics//5e8d3c04-d93b-48a7-875e-41ababed00e0.jpg"/> </div><br>
89+
<div align="center"> <img src="../pics//5e8d3c04-d93b-48a7-875e-41ababed00e0.jpg" width=""/> </div><br>
9090

9191
(以上分别为:电路交换、报文交换以及分组交换)
9292

@@ -140,14 +140,7 @@
140140

141141
<div align="center"> <img src="../pics//426df589-6f97-4622-b74d-4a81fcb1da8e.png" width="800"/> </div><br>
142142

143-
### 1. 七层协议
144-
145-
如图 a 所示,其中表示层和会话层用途如下:
146-
147-
1. 表示层:信息的语法、语义以及它们的关联,如加密解密、转换翻译、压缩解压缩;
148-
2. 会话层:不同机器上的用户之间建立及管理会话。
149-
150-
### 2. 五层协议
143+
### 1. 五层协议
151144

152145
1. 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
153146

@@ -159,6 +152,15 @@
159152

160153
5. 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
161154

155+
### 2. 七层协议
156+
157+
其中表示层和会话层用途如下:
158+
159+
1. 表示层:数据压缩、加密以及数据描述。这使得应用程序不必担心在各台主机中表示/存储的内部格式不同的问题。
160+
2. 会话层:建立及管理会话。
161+
162+
五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
163+
162164
### 3. 数据在各层之间的传递过程
163165

164166
在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。

0 commit comments

Comments
 (0)