auto commit
|
@ -193,21 +193,13 @@ public String replaceSpace(StringBuffer str) {
|
|||
|
||||
## 6. 从尾到头打印链表
|
||||
|
||||
正向遍历然后调用 Collections.reverse()。
|
||||
**题目描述**
|
||||
|
||||
```java
|
||||
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
|
||||
ArrayList<Integer> ret = new ArrayList<>();
|
||||
while (listNode != null) {
|
||||
ret.add(listNode.val);
|
||||
listNode = listNode.next;
|
||||
}
|
||||
Collections.reverse(ret);
|
||||
return ret;
|
||||
}
|
||||
```
|
||||
输入链表的第一个节点,从尾到头反过来打印出每个结点的值。
|
||||
|
||||
使用 Stack
|
||||
**解题思路**
|
||||
|
||||
栈
|
||||
|
||||
```java
|
||||
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
|
||||
|
@ -237,7 +229,23 @@ public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
|
|||
}
|
||||
```
|
||||
|
||||
不使用库函数,并且不使用递归的迭代实现,利用链表的头插法为逆序的特性。
|
||||
正向遍历然后调用 Collections.reverse()。
|
||||
|
||||
```java
|
||||
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
|
||||
ArrayList<Integer> ret = new ArrayList<>();
|
||||
while (listNode != null) {
|
||||
ret.add(listNode.val);
|
||||
listNode = listNode.next;
|
||||
}
|
||||
Collections.reverse(ret);
|
||||
return ret;
|
||||
}
|
||||
```
|
||||
|
||||
不使用库函数,并且不使用递归。利用链表头插法为逆序的特点。
|
||||
|
||||
头结点和第一个节点的区别:头结点是在头插法中使用的一个额外节点,这个节点不存储值;第一个节点就是链表的第一个真正存储值的节点。
|
||||
|
||||
```java
|
||||
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
|
||||
|
|
|
@ -839,9 +839,9 @@ if (uniqueInstance == null) {
|
|||
|
||||
有非常多的家电,并且之后会增加家电。
|
||||
|
||||
<div align="center"> <img src="../pics//7b8f0d8e-a4fa-4c9d-b9a0-3e6a11cb3e33.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//f6be22cb-d64f-4ee5-87b7-cbc4e6255c0e.jpg"/> </div><br>
|
||||
|
||||
<div align="center"> <img src="../pics//c3ca36b2-8459-4cf1-98b0-cc95a0e94f20.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//5b832bde-d05e-42db-b648-42e274571ad9.jpg"/> </div><br>
|
||||
|
||||
**2. 模式定义**
|
||||
|
||||
|
@ -857,11 +857,11 @@ if (uniqueInstance == null) {
|
|||
|
||||
- RemoteLoader 是客户端,注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。
|
||||
|
||||
<div align="center"> <img src="../pics//5ef94f62-98ce-464d-a646-842d9c72c8b8.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//b7b1f5c6-ff8a-4353-8060-44bbc4b9e02e.jpg"/> </div><br>
|
||||
|
||||
**4. 模式类图**
|
||||
|
||||
<div align="center"> <img src="../pics//1e09d75f-6268-4425-acf8-8ecd1b4a0ef3.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//26ccd069-55ec-4a28-aeb3-025e39e5810f.jpg"/> </div><br>
|
||||
|
||||
**5. 代码实现**
|
||||
|
||||
|
@ -948,7 +948,7 @@ Light is on!
|
|||
|
||||
将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。
|
||||
|
||||
<div align="center"> <img src="../pics//8e8ba824-7a9e-4934-a212-e6a41dcc1602.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//c484b07d-be3d-4699-9e28-f035de8a274c.jpg"/> </div><br>
|
||||
|
||||
**2. 模式类图**
|
||||
|
||||
|
@ -962,11 +962,11 @@ Light is on!
|
|||
|
||||
鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 调用的是 quack() 方法,而 Turkey 调用 gobble() 方法。
|
||||
|
||||
要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法。
|
||||
要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子。
|
||||
|
||||
**4. 解决方案类图**
|
||||
|
||||
<div align="center"> <img src="../pics//1a511c76-bb6b-40ab-b8aa-39eeb619d673.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//b8ceb9db-180e-4d01-932c-593fa2a6f515.jpg"/> </div><br>
|
||||
|
||||
**5. 代码实现**
|
||||
|
||||
|
@ -1022,6 +1022,10 @@ public class DuckTestDrive {
|
|||
gobble!
|
||||
```
|
||||
|
||||
**6. Enumration 适配成 Iterator**
|
||||
|
||||
<div align="center"> <img src="../pics//aa340e1a-f366-436b-a5a5-29a90425c10d.png"/> </div><br>
|
||||
|
||||
# 外观模式
|
||||
|
||||
**1. 模式定义**
|
||||
|
@ -1040,7 +1044,7 @@ gobble!
|
|||
|
||||
**4. 解决方案类图**
|
||||
|
||||
<div align="center"> <img src="../pics//25387681-89f8-4365-a2fa-83b86449ee84.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//a0339a9f-f44f-4e37-a37f-169bc735536d.jpg"/> </div><br>
|
||||
|
||||
**5. 设计原则**
|
||||
|
||||
|
@ -1062,7 +1066,7 @@ gobble!
|
|||
|
||||
模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去实现。
|
||||
|
||||
<div align="center"> <img src="../pics//ed62f400-192c-4185-899b-187958201f0c.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//87ffaf7f-4aa5-4da0-af84-994de62fa440.jpg"/> </div><br>
|
||||
|
||||
**3. 问题描述**
|
||||
|
||||
|
@ -1082,7 +1086,7 @@ gobble!
|
|||
|
||||
**6. 钩子**
|
||||
|
||||
钩子(hock):某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。
|
||||
某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。
|
||||
|
||||
**7. 代码实现**
|
||||
|
||||
|
@ -1334,7 +1338,7 @@ public class Client {
|
|||
|
||||
组合类拥有一个组件对象,因此组合类的操作可以委托给组件对象去处理,而组件对象可以是另一个组合类或者叶子类。
|
||||
|
||||
<div align="center"> <img src="../pics//f99c019e-7e91-4c2e-b94d-b031c402dcb5.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//cf08a51d-14c0-4bfc-863b-c8672d9c2b02.jpg"/> </div><br>
|
||||
|
||||
**4. 代码实现**
|
||||
|
||||
|
|
BIN
pics/26ccd069-55ec-4a28-aeb3-025e39e5810f.jpg
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
pics/5b832bde-d05e-42db-b648-42e274571ad9.jpg
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
pics/87ffaf7f-4aa5-4da0-af84-994de62fa440.jpg
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
pics/a0339a9f-f44f-4e37-a37f-169bc735536d.jpg
Normal file
After Width: | Height: | Size: 246 KiB |
BIN
pics/aa340e1a-f366-436b-a5a5-29a90425c10d.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
pics/b7b1f5c6-ff8a-4353-8060-44bbc4b9e02e.jpg
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
pics/b8ceb9db-180e-4d01-932c-593fa2a6f515.jpg
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
pics/c484b07d-be3d-4699-9e28-f035de8a274c.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
pics/cf08a51d-14c0-4bfc-863b-c8672d9c2b02.jpg
Normal file
After Width: | Height: | Size: 227 KiB |
BIN
pics/f6be22cb-d64f-4ee5-87b7-cbc4e6255c0e.jpg
Normal file
After Width: | Height: | Size: 160 KiB |