diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md index b7114ca2..726a164e 100644 --- a/notes/剑指 offer 题解.md +++ b/notes/剑指 offer 题解.md @@ -193,21 +193,13 @@ public String replaceSpace(StringBuffer str) { ## 6. 从尾到头打印链表 -正向遍历然后调用 Collections.reverse()。 +**题目描述** -```java -public ArrayList printListFromTailToHead(ListNode listNode) { - ArrayList ret = new ArrayList<>(); - while (listNode != null) { - ret.add(listNode.val); - listNode = listNode.next; - } - Collections.reverse(ret); - return ret; -} -``` +输入链表的第一个节点,从尾到头反过来打印出每个结点的值。 -使用 Stack +**解题思路** + +栈 ```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -237,7 +229,23 @@ public ArrayList printListFromTailToHead(ListNode listNode) { } ``` -不使用库函数,并且不使用递归的迭代实现,利用链表的头插法为逆序的特性。 +正向遍历然后调用 Collections.reverse()。 + +```java +public ArrayList printListFromTailToHead(ListNode listNode) { + ArrayList ret = new ArrayList<>(); + while (listNode != null) { + ret.add(listNode.val); + listNode = listNode.next; + } + Collections.reverse(ret); + return ret; +} +``` + +不使用库函数,并且不使用递归。利用链表头插法为逆序的特点。 + +头结点和第一个节点的区别:头结点是在头插法中使用的一个额外节点,这个节点不存储值;第一个节点就是链表的第一个真正存储值的节点。 ```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git a/notes/设计模式.md b/notes/设计模式.md index a3236d1c..1211d4d3 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -839,9 +839,9 @@ if (uniqueInstance == null) { 有非常多的家电,并且之后会增加家电。 -

+

-

+

**2. 模式定义** @@ -857,11 +857,11 @@ if (uniqueInstance == null) { - RemoteLoader 是客户端,注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。 -

+

**4. 模式类图** -

+

**5. 代码实现** @@ -948,7 +948,7 @@ Light is on! 将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 -

+

**2. 模式类图** @@ -962,11 +962,11 @@ Light is on! 鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 调用的是 quack() 方法,而 Turkey 调用 gobble() 方法。 -要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法。 +要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子。 **4. 解决方案类图** -

+

**5. 代码实现** @@ -1022,6 +1022,10 @@ public class DuckTestDrive { gobble! ``` +**6. Enumration 适配成 Iterator** + +

+ # 外观模式 **1. 模式定义** @@ -1040,7 +1044,7 @@ gobble! **4. 解决方案类图** -

+

**5. 设计原则** @@ -1062,7 +1066,7 @@ gobble! 模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去实现。 -

+

**3. 问题描述** @@ -1082,7 +1086,7 @@ gobble! **6. 钩子** -钩子(hock):某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。 +某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。 **7. 代码实现** @@ -1334,7 +1338,7 @@ public class Client { 组合类拥有一个组件对象,因此组合类的操作可以委托给组件对象去处理,而组件对象可以是另一个组合类或者叶子类。 -

+

**4. 代码实现** diff --git a/pics/26ccd069-55ec-4a28-aeb3-025e39e5810f.jpg b/pics/26ccd069-55ec-4a28-aeb3-025e39e5810f.jpg new file mode 100644 index 00000000..9db84485 Binary files /dev/null and b/pics/26ccd069-55ec-4a28-aeb3-025e39e5810f.jpg differ diff --git a/pics/5b832bde-d05e-42db-b648-42e274571ad9.jpg b/pics/5b832bde-d05e-42db-b648-42e274571ad9.jpg new file mode 100644 index 00000000..8a478f5b Binary files /dev/null and b/pics/5b832bde-d05e-42db-b648-42e274571ad9.jpg differ diff --git a/pics/87ffaf7f-4aa5-4da0-af84-994de62fa440.jpg b/pics/87ffaf7f-4aa5-4da0-af84-994de62fa440.jpg new file mode 100644 index 00000000..e4860023 Binary files /dev/null and b/pics/87ffaf7f-4aa5-4da0-af84-994de62fa440.jpg differ diff --git a/pics/a0339a9f-f44f-4e37-a37f-169bc735536d.jpg b/pics/a0339a9f-f44f-4e37-a37f-169bc735536d.jpg new file mode 100644 index 00000000..a20282eb Binary files /dev/null and b/pics/a0339a9f-f44f-4e37-a37f-169bc735536d.jpg differ diff --git a/pics/aa340e1a-f366-436b-a5a5-29a90425c10d.png b/pics/aa340e1a-f366-436b-a5a5-29a90425c10d.png new file mode 100644 index 00000000..5d866289 Binary files /dev/null and b/pics/aa340e1a-f366-436b-a5a5-29a90425c10d.png differ diff --git a/pics/b7b1f5c6-ff8a-4353-8060-44bbc4b9e02e.jpg b/pics/b7b1f5c6-ff8a-4353-8060-44bbc4b9e02e.jpg new file mode 100644 index 00000000..1dd8427d Binary files /dev/null and b/pics/b7b1f5c6-ff8a-4353-8060-44bbc4b9e02e.jpg differ diff --git a/pics/b8ceb9db-180e-4d01-932c-593fa2a6f515.jpg b/pics/b8ceb9db-180e-4d01-932c-593fa2a6f515.jpg new file mode 100644 index 00000000..69af8dfb Binary files /dev/null and b/pics/b8ceb9db-180e-4d01-932c-593fa2a6f515.jpg differ diff --git a/pics/c484b07d-be3d-4699-9e28-f035de8a274c.jpg b/pics/c484b07d-be3d-4699-9e28-f035de8a274c.jpg new file mode 100644 index 00000000..4c90b9d8 Binary files /dev/null and b/pics/c484b07d-be3d-4699-9e28-f035de8a274c.jpg differ diff --git a/pics/cf08a51d-14c0-4bfc-863b-c8672d9c2b02.jpg b/pics/cf08a51d-14c0-4bfc-863b-c8672d9c2b02.jpg new file mode 100644 index 00000000..b3b36b81 Binary files /dev/null and b/pics/cf08a51d-14c0-4bfc-863b-c8672d9c2b02.jpg differ diff --git a/pics/f6be22cb-d64f-4ee5-87b7-cbc4e6255c0e.jpg b/pics/f6be22cb-d64f-4ee5-87b7-cbc4e6255c0e.jpg new file mode 100644 index 00000000..bb25340d Binary files /dev/null and b/pics/f6be22cb-d64f-4ee5-87b7-cbc4e6255c0e.jpg differ