diff --git a/DataStructureAndAlgorithm/08 Leetcode同步练习(三).md b/DataStructureAndAlgorithm/08 Leetcode同步练习(三).md
new file mode 100644
index 0000000..11215b2
--- /dev/null
+++ b/DataStructureAndAlgorithm/08 Leetcode同步练习(三).md
@@ -0,0 +1,794 @@
+
+# Leetcodeͬϰ
+
+
+## Ŀ01ϲ
+
+> - ţ21
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/merge-two-sorted-lists/
+
+ϲΪһµءͨƴӸнڵɵġ
+
+**ʾ**
+
+```c
+룺1->2->4, 1->3->4
+1->1->2->3->4->4
+```
+
+**ο**
+
+- ִнͨ
+- ִʱ108 ms, C# ύл 83.80% û
+- ڴģ25.9 MB, C# ύл 5.85% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+public class Solution
+{
+ public ListNode MergeTwoLists(ListNode l1, ListNode l2)
+ {
+ ListNode pHead = new ListNode(int.MaxValue);
+ ListNode temp = pHead;
+
+ while (l1 != null && l2 != null)
+ {
+ if (l1.val < l2.val)
+ {
+ temp.next = l1;
+ l1 = l1.next;
+ }
+ else
+ {
+ temp.next = l2;
+ l2 = l2.next;
+ }
+ temp = temp.next;
+ }
+
+ if (l1 != null)
+ temp.next = l1;
+
+ if (l2 != null)
+ temp.next = l2;
+
+ return pHead.next;
+ }
+}
+```
+
+---
+## Ŀ02ɾеظԪ
+
+> - ţ83
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/
+
+
+һɾظԪأʹÿԪֻһΡ
+
+
+**ʾ 1:**
+
+```c
+: 1->1->2
+: 1->2
+```
+
+**ʾ 2:**
+```c
+: 1->1->2->3->3
+: 1->2->3
+```
+
+**˼·**˫ָķʽ
+
+`p1`Ϊǰָ̽·`p2`ΪָظԪأ`p2.next`ȥ`p1`ظԪضժ
+
+**ο**
+
+- ִнͨ
+- ִʱ160 ms, C# ύл 5.23% û
+- ڴģ25.9 MB, C# ύл 5.72% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+
+public class Solution
+{
+ public ListNode DeleteDuplicates(ListNode head)
+ {
+ if (head == null)
+ return head;
+
+ ListNode p1 = head.next;
+ ListNode p2 = head;
+ while (p1 != null)
+ {
+ if (p1.val == p2.val)
+ p2.next = p1.next;
+ else
+ p2 = p2.next;
+ p1 = p1.next;
+ }
+ return head;
+ }
+}
+```
+
+---
+## Ŀ03
+
+> - ţ141
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/linked-list-cycle/
+
+һжǷл
+
+Ϊ˱ʾеĻʹ`pos` ʾβӵеλã 0 ʼ `pos` -1ڸûл
+
+ʾ 1
+```c
+룺head = [3,2,0,-4], pos = 1
+true
+ͣһβӵڶڵ㡣
+```
+
+
+
+ʾ 2
+```c
+룺head = [1,2], pos = 0
+true
+ͣһβӵһڵ㡣
+```
+
+
+ʾ 3
+```c
+룺head = [1], pos = -1
+false
+ͣûл
+```
+
+
+
+
+ O(1)ڴ
+
+**˼·**˫ָķʽ
+
+ͨ£жǷظԪأʹ`Hash`ķʽڵֳҲʹ˫ָķʽ
+
+һָ `p1` ÿƶڵ㣬ڶָ `p2` ÿƶһڵ㣬ڻĻһָһٴڶָ룬֮ڻ
+
+磺`head = [1,2,3,4,5]`
+
+```c
+p11 3 5 2 4 1
+p21 2 3 4 5 1
+```
+
+磺`head = [1,2,3,4]`ż
+```c
+p11 3 1 3 1
+p21 2 3 4 1
+```
+
+**ο**
+
+- ״̬ͨ
+- ִʱ: 112 ms, C# ύл 98.43% û
+- ڴ: 24.9 MB, C# ύл 5.13% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) {
+ * val = x;
+ * next = null;
+ * }
+ * }
+ */
+public class Solution {
+ public bool HasCycle(ListNode head) {
+ ListNode p1 = head;
+ ListNode p2 = head;
+
+ while (p1 != null && p1.next != null)
+ {
+ p1 = p1.next.next;
+ p2 = p2.next;
+ if (p1 == p2)
+ return true;
+ }
+ return false;
+ }
+}
+```
+
+## Ŀ04ת
+
+
+> - ţ206
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/reverse-linked-list/
+
+תһ
+
+ʾ:
+```c
+: 1->2->3->4->5->NULL
+: 5->4->3->2->1->NULL
+```
+
+:
+
+Եݹطתַܷ⣿
+
+**˼·**˫ָķʽ
+
+`p1`Ϊǰָ̽·`p2`Ϊָ˳һȦ㶨⡣
+
+**ο**
+
+- ״̬ͨ
+- ִʱ: 116 ms, C# ύл 97.50% û
+- ڴ: 23.3 MB, C# ύл 5.26% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+
+public class Solution
+{
+ public ListNode ReverseList(ListNode head)
+ {
+ if (head == null || head.next == null)
+ return head;
+
+ ListNode p1 = head;
+ ListNode p2 = null;
+ while (p1 != null)
+ {
+ ListNode temp = p1.next;
+ p1.next = p2;
+ p2 = p1;
+ p1 = temp;
+ }
+ return p2;
+ }
+}
+```
+
+---
+## Ŀ05ɾеĽڵ
+
+> - ţ237
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
+
+дһʹɾijиģĩβڵ㣬㽫ֻҪɾĽڵ㡣
+
+һ -- head = [4,5,1,9]ԱʾΪ:
+
+
+
+
+ʾ 1:
+```c
+: head = [4,5,1,9], node = 5
+: [4,1,9]
+: ֵΪ 5 ĵڶڵ㣬ôڵĺ֮ӦΪ 4 -> 1 -> 9.
+```
+
+ʾ 2:
+```c
+: head = [4,5,1,9], node = 1
+: [4,5,9]
+: ֵΪ 1 ĵڵ㣬ôڵĺ֮ӦΪ 4 -> 5 -> 9.
+```
+
+˵:
+
+- ٰڵ㡣
+- нڵֵΨһġ
+- ĽڵΪĩβڵ㲢һеһЧڵ㡣
+- Ҫĺзκν
+
+
+
+**˼·** ûиͷڵ㣬ֱӸҪɾĽڵ㣬ǽԭɾǶڸýڵǰһڵһֱִ֪ɾˣǽҪɾڵ next ڵֵֵҪɾĽڵ㣬תȥɾ next ڵ㣬ӶĿġ
+
+**ο**
+
+- ״̬ͨ
+- 41 / 41 ͨ
+- ִʱ: 120 ms, C# ύл 99.55% û
+- ڴ: 24.4 MB, C# ύл 5.88% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+
+public class Solution
+{
+ public void DeleteNode(ListNode node)
+ {
+ ListNode temp = node.next;
+ while (temp != null)
+ {
+ node.val = temp.val;
+ temp = temp.next;
+ if (temp != null)
+ {
+ node = node.next;
+ }
+ }
+ node.next = null;
+ }
+}
+```
+
+
+
+---
+## Ŀ06
+
+> - ţ2
+> - Ѷȣе
+> - https://leetcode-cn.com/problems/add-two-numbers/
+
+ ǿ ʾǸУǸԵλǰ ķʽ洢ģǵÿڵֻܴ洢 һλ ֡
+
+ǽ᷵һµʾǵĺ͡
+
+Լ 0 ֮⣬ 0 ͷ
+
+ʾ 1
+```c
+룺(2 -> 4 -> 3) + (5 -> 6 -> 4)
+7 -> 0 -> 8
+ԭ342 + 465 = 807
+```
+
+ʾ 2
+```c
+룺(3 -> 7) + (9 -> 2)
+2 -> 0 -> 1
+ԭ73 + 29 = 102
+```
+
+**˼·**ģСѧʱѧļӷ㡣λӳʮһʮλнλϽλơ
+
+ο룺
+
+- ״̬ͨ
+- ִʱ: 144 ms, C# ύл 97.98% û
+- ڴ: 26.7 MB, C# ύл 5.07% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+public class Solution
+{
+ public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
+ {
+ ListNode result = new ListNode(-1);
+ ListNode l3 = result;
+ int flag = 0;
+ while (l1 != null && l2 != null)
+ {
+ int a = l1.val;
+ int b = l2.val;
+ int c = a + b + flag;
+ l3.next = new ListNode(c%10);
+
+ flag = c >= 10 ? 1 : 0;
+ l1 = l1.next;
+ l2 = l2.next;
+ l3 = l3.next;
+ }
+
+ while (l1 != null)
+ {
+ int a = l1.val + flag;
+
+ l3.next = new ListNode(a%10);
+
+ flag = a >= 10 ? 1 : 0;
+ l1 = l1.next;
+ l3 = l3.next;
+ }
+
+ while (l2 != null)
+ {
+ int b = l2.val + flag;
+
+ l3.next = new ListNode(b%10);
+ flag = b >= 10 ? 1 : 0;
+ l2 = l2.next;
+ l3 = l3.next;
+ }
+
+ if (flag == 1)
+ {
+ l3.next = new ListNode(flag);
+ }
+ return result.next;
+ }
+}
+```
+
+---
+## Ŀ07ɾĵNڵ
+
+> - ţ19
+> - Ѷȣе
+> - https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
+
+һɾĵ`n`ڵ㣬ҷͷ㡣
+
+**ʾ**
+
+```c
+һ: 1->2->3->4->5, n = 2.
+
+ɾ˵ڶڵΪ 1->2->3->5.
+```
+
+**˵**
+
+`n`֤Чġ
+
+****
+
+ܳʹһɨʵ
+
+**˼·** ʹָ룬ǰָ`p1``n`úָ`p2``p1`ͬߣ`p1`ߵյ㣬`p2`ߵҪƳĽλá
+
+**ο룺**
+- ִнͨ
+- ִʱ104 ms, C# ύл 86.93% û
+- ڴģ24.6 MB, C# ύл 100.00% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+public class Solution
+{
+ public ListNode RemoveNthFromEnd(ListNode head, int n)
+ {
+ ListNode p1 = head;
+ ListNode p2 = head;
+
+ while (n > 0)
+ {
+ p1 = p1.next;
+ n--;
+ }
+
+ if (p1 == null) //Ƴͷ
+ {
+ return head.next;
+ }
+
+ while (p1.next != null)
+ {
+ p1 = p1.next;
+ p2 = p2.next;
+ }
+
+ p2.next = p2.next.next;
+ return head;
+ }
+}
+```
+
+
+---
+## Ŀ08еĽڵ
+
+> - ţ24
+> - Ѷȣе
+> - https://leetcode-cn.com/problems/swap-nodes-in-pairs/
+
+һڵĽڵ㣬ؽ
+
+**㲻ֻǵĸıڵڲֵ**ҪʵʵĽнڵ㽻
+
+
+
+**ʾ:**
+
+> 1->2->3->4, Ӧ÷ 2->1->4->3.
+
+
+**ο**
+
+- ִнͨ
+- ִʱ100 ms, C# ύл 93.18% û
+- ڴģ23.4 MB, C# ύл 87.72% û
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+
+public class Solution
+{
+ public ListNode SwapPairs(ListNode head)
+ {
+ if (head == null || head.next == null)
+ return head;
+
+ head = Swap(head);
+
+ ListNode temp = head.next;
+
+ while (temp != null && temp.next != null)
+ {
+ temp.next = Swap(temp.next);
+ if (temp.next != null)
+ {
+ temp = temp.next.next;
+ }
+ }
+ return head;
+ }
+
+ public ListNode Swap(ListNode node)
+ {
+ if (node == null || node.next == null)
+ return node;
+
+ ListNode t = node.next;
+ node.next = t.next;
+ t.next = node;
+ return t;
+ }
+}
+```
+
+---
+## Ŀ09ת
+
+
+> - ţ61
+> - Ѷȣе
+> - https://leetcode-cn.com/problems/rotate-list/
+
+һתÿڵƶ k λã k ǷǸ
+
+**ʾ 1:**
+
+```c
+: 1->2->3->4->5->NULL, k = 2
+: 4->5->1->2->3->NULL
+
+:
+ת 1 : 5->1->2->3->4->NULL
+ת 2 : 4->5->1->2->3->NULL
+```
+
+**ʾ 2:**
+
+```c
+: 0->1->2->NULL, k = 4
+: 2->0->1->NULL
+
+:
+ת 1 : 2->0->1->NULL
+ת 2 : 1->2->0->NULL
+ת 3 : 0->1->2->NULL
+ת 4 : 2->0->1->NULL
+```
+
+
+
+
+**ο**
+
+- ִнͨ
+- ִʱ100 ms, C# ύл 98.13% û
+- ڴģ25.1 MB, C# ύл 100.00% û
+
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+
+public class Solution
+{
+ public ListNode RotateRight(ListNode head, int k)
+ {
+ if (head == null || k == 0)
+ return head;
+
+ int len = GetLength(head);
+ int index = len - k%len;
+
+ if (index == len)
+ return head;
+
+ ListNode temp1 = head;
+ ListNode temp2 = head;
+ for (int i = 0; i < index - 1; i++)
+ {
+ temp1 = temp1.next;
+ }
+ head = temp1.next;
+ temp1.next = null;
+
+ temp1 = head;
+ while (temp1.next != null)
+ {
+ temp1 = temp1.next;
+ }
+ temp1.next = temp2;
+ return head;
+ }
+
+ public int GetLength(ListNode head)
+ {
+ ListNode temp = head;
+ int i = 0;
+ while (temp != null)
+ {
+ i++;
+ temp = temp.next;
+ }
+ return i;
+ }
+}
+```
+
+
+
+---
+## Ŀ10ϲK
+
+> - ţ23
+> - Ѷȣ
+> - https://leetcode-cn.com/problems/merge-k-sorted-lists/
+
+
+ϲ k غϲ㷨ĸӶȡ
+
+ʾ:
+```c
+:
+[
+ 1->4->5,
+ 1->3->4,
+ 2->6
+]
+: 1->1->2->3->4->4->5->6
+```
+
+˼·ϲķʽ
+
+ϲõһµķ`ListNode MergeTwoLists(ListNode l1, ListNode l2)`ʹø÷ϲǰõһµ֮ϲƣõϲ`K`бб
+
+
+**ο**
+
+- ִнͨ
+- ִʱ256 ms, C# ύл 36.69% û
+- ڴģ29.3 MB, C# ύл 18.37% û
+
+
+```c
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int x) { val = x; }
+ * }
+ */
+public class Solution
+{
+ public ListNode MergeTwoLists(ListNode l1, ListNode l2)
+ {
+ ListNode pHead = new ListNode(int.MaxValue);
+ ListNode temp = pHead;
+
+ while (l1 != null && l2 != null)
+ {
+ if (l1.val < l2.val)
+ {
+ temp.next = l1;
+ l1 = l1.next;
+ }
+ else
+ {
+ temp.next = l2;
+ l2 = l2.next;
+ }
+ temp = temp.next;
+ }
+
+ if (l1 != null)
+ temp.next = l1;
+
+ if (l2 != null)
+ temp.next = l2;
+
+ return pHead.next;
+ }
+
+ public ListNode MergeKLists(ListNode[] lists) {
+ if (lists.Length == 0)
+ return null;
+
+ ListNode result = lists[0];
+ for (int i = 1; i < lists.Length; i++)
+ {
+ result = MergeTwoLists(result, lists[i]);
+ }
+ return result;
+ }
+}
+```
+
+
+
+
+
+
+
+
diff --git a/DataStructureAndAlgorithm/08 队列.md b/DataStructureAndAlgorithm/10 队列.md
similarity index 100%
rename from DataStructureAndAlgorithm/08 队列.md
rename to DataStructureAndAlgorithm/10 队列.md
diff --git a/DataStructureAndAlgorithm/10 字符串.md b/DataStructureAndAlgorithm/11 字符串.md
similarity index 100%
rename from DataStructureAndAlgorithm/10 字符串.md
rename to DataStructureAndAlgorithm/11 字符串.md