From 6eba9192b24666dd0512a55eb55a8084fab2ed78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Wed, 16 Oct 2019 11:19:52 +0800 Subject: [PATCH 01/37] Create test.txt for test --- "Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" "b/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" new file mode 100644 index 000000000..9814251a7 --- /dev/null +++ "b/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" @@ -0,0 +1 @@ +ļ \ No newline at end of file From 232c82b79cf72b9bcb8ac20db16ceba4b1b70090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 09:59:10 +0800 Subject: [PATCH 02/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index a6321d6e2..306e2494a 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,4 +1,4 @@ # NOTE - + test From 338a61d7afb763658694c964bb2948d2029af095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:31:07 +0800 Subject: [PATCH 03/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 306e2494a..46ccc89fb 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,4 +1,37 @@ # NOTE - test +## 【536-Week 01】学习总结 + +本周总结标题:【536-Week 01】算法学习习惯的探索 + +本周总结从两部分来做:关于算法本身新的认识和算法学习习惯探索 +列一下这周可以做总结的地方 +1. + + +## 关键部分笔记 + +blabla... + +--- + +## 总结正文 + +#### 【536-Week 01】算法学习习惯的探索 + +覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,我的算法学习步骤大致如下: +1、覃超老师的在线课程先听一遍,在听的过程中,涉及算法例题讲解的部分,自己同步在纸上写思路,和手写源码; + 注:第一遍主要是完成课程,了解知识点。 +2、听完在线课程后,针对例题和练习题,学习leetcode上经典题解,每题在IDE里至少两种解法编写,提交leetcode; + 注:第二遍主要是刻意练习,巩固知识点。 +3、对于做过的题目,跳出自己认为难理解、容易忘的题目再次IDE里编写,提交leetcode; + 注:第三遍主要是查漏补缺,掌握知识点。 + + + +--- + +#### 点评 + + From 3d4ffe14d6138612fdc68d110ec5a4c87b16a721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:31:50 +0800 Subject: [PATCH 04/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 46ccc89fb..26046d3da 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -6,6 +6,7 @@ 本周总结从两部分来做:关于算法本身新的认识和算法学习习惯探索 列一下这周可以做总结的地方 + 1. From 7f7e822d6b9eada402430dd25c0e9f49dbed8dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:35:30 +0800 Subject: [PATCH 05/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 26046d3da..62e0a32b6 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -21,11 +21,17 @@ blabla... #### 【536-Week 01】算法学习习惯的探索 覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,我的算法学习步骤大致如下: + 1、覃超老师的在线课程先听一遍,在听的过程中,涉及算法例题讲解的部分,自己同步在纸上写思路,和手写源码; + 注:第一遍主要是完成课程,了解知识点。 + 2、听完在线课程后,针对例题和练习题,学习leetcode上经典题解,每题在IDE里至少两种解法编写,提交leetcode; + 注:第二遍主要是刻意练习,巩固知识点。 + 3、对于做过的题目,跳出自己认为难理解、容易忘的题目再次IDE里编写,提交leetcode; + 注:第三遍主要是查漏补缺,掌握知识点。 From a6e90279cfea4c1262cfedf519c6c5561e4e0c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:37:59 +0800 Subject: [PATCH 06/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 62e0a32b6..eb652c7fa 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -17,6 +17,10 @@ blabla... --- ## 总结正文 +#### 点评 + + +--- #### 【536-Week 01】算法学习习惯的探索 @@ -36,9 +40,7 @@ blabla... ---- -#### 点评 From 0088025f4a91f93c7b50b8cef065340d02b01c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:43:22 +0800 Subject: [PATCH 07/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index eb652c7fa..387c4057d 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -4,8 +4,7 @@ 本周总结标题:【536-Week 01】算法学习习惯的探索 -本周总结从两部分来做:关于算法本身新的认识和算法学习习惯探索 -列一下这周可以做总结的地方 +本周总结分两部分来做:关于算法本身新的认识和算法学习习惯探索 1. @@ -17,10 +16,6 @@ blabla... --- ## 总结正文 -#### 点评 - - ---- #### 【536-Week 01】算法学习习惯的探索 @@ -40,7 +35,7 @@ blabla... - +## Review和点评 From 31eee390b89265b35cca20a5127e5c1b0a7a09ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:44:51 +0800 Subject: [PATCH 08/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 387c4057d..a33746c64 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,20 +1,5 @@ # NOTE -## 【536-Week 01】学习总结 - -本周总结标题:【536-Week 01】算法学习习惯的探索 - -本周总结分两部分来做:关于算法本身新的认识和算法学习习惯探索 - -1. - - -## 关键部分笔记 - -blabla... - ---- - ## 总结正文 #### 【536-Week 01】算法学习习惯的探索 @@ -33,7 +18,7 @@ blabla... 注:第三遍主要是查漏补缺,掌握知识点。 - +--- ## Review和点评 From 1d1f704df2c0423827e4cb3388ab4446233f8618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:45:29 +0800 Subject: [PATCH 09/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index a33746c64..b1e19dc50 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,6 +1,6 @@ # NOTE -## 总结正文 +## 学习总结 #### 【536-Week 01】算法学习习惯的探索 From 07cdad08a1dcfb6be6e3daa78318ca280c499420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 10:54:31 +0800 Subject: [PATCH 10/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index b1e19dc50..e36925c6b 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -20,6 +20,11 @@ --- +## 改写代码和分析源码 +主要用C/C++,不熟悉Java + +--- + ## Review和点评 From 1b05a391f435c2daa9809909699dde561846c180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 11:00:13 +0800 Subject: [PATCH 11/37] Delete test.txt --- "Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" | 1 - 1 file changed, 1 deletion(-) delete mode 100644 "Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" "b/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" deleted file mode 100644 index 9814251a7..000000000 --- "a/Week \351\242\204\344\271\240\345\221\250/id_536/test.txt" +++ /dev/null @@ -1 +0,0 @@ -ļ \ No newline at end of file From e0518c69733be58fdd3508c5321664a7e8c3c854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 11:26:55 +0800 Subject: [PATCH 12/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index e36925c6b..8177cd269 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,8 +1,13 @@ -# NOTE +# 学习总结 -## 学习总结 +## 关于新算法知识的理解 -#### 【536-Week 01】算法学习习惯的探索 +#### 【536-Week1】算法学习习惯的探索 + + +## 其他 + +#### 感想:算法学习习惯的探索 覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,我的算法学习步骤大致如下: @@ -18,14 +23,15 @@ 注:第三遍主要是查漏补缺,掌握知识点。 + --- -## 改写代码和分析源码 +# 改写代码和分析源码 主要用C/C++,不熟悉Java --- -## Review和点评 +# Review和点评 From 368cbae361ae5c4252ec1bf37bf1ee94f3da8b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 11:28:01 +0800 Subject: [PATCH 13/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 8177cd269..c4b531787 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -1,11 +1,11 @@ -# 学习总结 +# 1.学习总结 -## 关于新算法知识的理解 +## 1.1关于新算法知识的理解 #### 【536-Week1】算法学习习惯的探索 -## 其他 +## 1.2其他 #### 感想:算法学习习惯的探索 @@ -26,12 +26,12 @@ --- -# 改写代码和分析源码 +# 2.改写代码和分析源码 主要用C/C++,不熟悉Java --- -# Review和点评 +# 3.Review和点评 From c74e6e27b1055dd0a3fd8d99a9e08167ac729440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 11:29:15 +0800 Subject: [PATCH 14/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index c4b531787..03cea70be 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -5,9 +5,10 @@ #### 【536-Week1】算法学习习惯的探索 -## 1.2其他 -#### 感想:算法学习习惯的探索 +## 1.2其他感想 + +#### 算法学习习惯的探索 覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,我的算法学习步骤大致如下: From 03ab064691c24bd2a06ae2a326e9467f835eb041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 14:36:42 +0800 Subject: [PATCH 15/37] Create leetcode_283_536.cpp --- Week 01/id_536/leetcode_283_536.cpp | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Week 01/id_536/leetcode_283_536.cpp diff --git a/Week 01/id_536/leetcode_283_536.cpp b/Week 01/id_536/leetcode_283_536.cpp new file mode 100644 index 000000000..82876cca1 --- /dev/null +++ b/Week 01/id_536/leetcode_283_536.cpp @@ -0,0 +1,64 @@ +#include +#include + +using namespace std; + +class Solution { +public: + /********* + ⷨ1˫ָ뷨 + ********/ + void moveZeroes1(vector& nums) { + int i,j,k; + j=0; + for(i=0;i& nums) { + int i,j,k; + vector numsAns; + j=0; + for(i=0;i nums; + /******* + ²֤ + *****/ + nums.push_back(0); + nums.push_back(1); + nums.push_back(0); + nums.push_back(3); + nums.push_back(12); + s.moveZeroes2(nums); + for(int i=0;i Date: Fri, 18 Oct 2019 14:53:05 +0800 Subject: [PATCH 16/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 03cea70be..d87be275e 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -2,7 +2,7 @@ ## 1.1关于新算法知识的理解 -#### 【536-Week1】算法学习习惯的探索 +#### 【536-Week1】关于跳表用处的理解 From c41ce5418327a87de09e95f997f8a3adb6d68b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 14:55:00 +0800 Subject: [PATCH 17/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index d87be275e..84a6b6cd8 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -10,7 +10,7 @@ #### 算法学习习惯的探索 -覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,我的算法学习步骤大致如下: +覃超老师说过算法学习需要刻意练习,印象最深的就是“五毒神掌”,相同的题目要不断的刷。道理很简单,但真正做到有难度,因为工作较忙,结合实际情况,只能减少遍数,我的算法学习步骤大致计划如下: 1、覃超老师的在线课程先听一遍,在听的过程中,涉及算法例题讲解的部分,自己同步在纸上写思路,和手写源码; From 6a214a14d5d32bacc769fb785c96635697a087f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:02:39 +0800 Subject: [PATCH 18/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 84a6b6cd8..bf9d159da 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -2,7 +2,12 @@ ## 1.1关于新算法知识的理解 -#### 【536-Week1】关于跳表用处的理解 +#### 【536-Week1】关于跳表的理解 +本周对相对陌生的跳表进行总结,以掌握思想为主,总结内容包括: +1、跳表的定义; +2、跳表的相关操作; +3、跳表的应用; +###### 第一部分:跳表的定义 From f973caeb0dd98ae5b38e7da0813128565ab6e33e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:05:55 +0800 Subject: [PATCH 19/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index bf9d159da..886d44981 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -8,6 +8,22 @@ 2、跳表的相关操作; 3、跳表的应用; ###### 第一部分:跳表的定义 + 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 + + 跳跃表的结构 + 跳跃表由多条链构成(S0,S1,S2 ……,Sh),且满足如下三个条件: + (1)每条链必须包含两个特殊元素:+∞ 和 -∞ +S0包含所有的元素,并且所有链中的元素按照升序排列。 +每条链中的元素集合必须包含于序数较小的链的元素集合,即: + + +###### 第二部分:跳表的相关操作 + + + +###### 第三部分:跳表的应用 + + From 3e66a8a74744e13741aa4068eda04794de48cfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:14:11 +0800 Subject: [PATCH 20/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 886d44981..b63a444da 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -3,19 +3,37 @@ ## 1.1关于新算法知识的理解 #### 【536-Week1】关于跳表的理解 -本周对相对陌生的跳表进行总结,以掌握思想为主,总结内容包括: +本周对相对陌生的跳表进行总结,以掌握思想为主,通过课上学习和查找相关材料,总结内容包括: + 1、跳表的定义; + 2、跳表的相关操作; + 3、跳表的应用; ###### 第一部分:跳表的定义 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 - 跳跃表的结构 + 1、跳跃表的结构 + 跳跃表由多条链构成(S0,S1,S2 ……,Sh),且满足如下三个条件: - (1)每条链必须包含两个特殊元素:+∞ 和 -∞ -S0包含所有的元素,并且所有链中的元素按照升序排列。 -每条链中的元素集合必须包含于序数较小的链的元素集合,即: + + (1)每条链必须包含两个特殊元素:+∞ 和 -∞; + + (2)S0包含所有的元素,并且所有链中的元素按照升序排列; + (3)每条链中的元素集合必须包含于序数较小的链的元素集合。 + + 2、跳跃表的时间及空间复杂度 + + 空间复杂度: O(n) + + 时间复杂度: + + (1)查找: O(logn) + + (2)插入: O(logn) + + (3)删除: O(logn) ###### 第二部分:跳表的相关操作 From a1cfe8cc81f08cd7c17e1fb80af124f03a67fc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:16:08 +0800 Subject: [PATCH 21/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index b63a444da..2519a30a6 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -11,7 +11,7 @@ 3、跳表的应用; ###### 第一部分:跳表的定义 - 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 + 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 1、跳跃表的结构 @@ -31,7 +31,7 @@ (1)查找: O(logn) - (2)插入: O(logn) + (2)查找: O(logn) (3)删除: O(logn) From 70346994a3049aeea74a3436508e244770f12fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:23:51 +0800 Subject: [PATCH 22/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 2519a30a6..f16dede26 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -7,11 +7,11 @@ 1、跳表的定义; -2、跳表的相关操作; +2、跳表的相关操作及实现思路; 3、跳表的应用; ###### 第一部分:跳表的定义 - 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 + 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 1、跳跃表的结构 @@ -30,13 +30,30 @@ 时间复杂度: (1)查找: O(logn) - - (2)查找: O(logn) + + (2)查找: O(logn) (3)删除: O(logn) -###### 第二部分:跳表的相关操作 - +###### 第二部分:跳表的相关操作及实现思路 + 操作包括查找、插入、删除,各操作实现思路如下: + 1、查找 + 在跳跃表中查找一个元素x,按照如下几个步骤进行: + 从最上层的链(Sh)的开头开始 + 假设当前位置为p,它向右指向的节点为q(p与q不一定相邻),且q的值为y。将y与x作比较 + + x=y 输出查询成功,输出相关信息 + + yx 从p向下移动一格 + + 如果当前位置在最底层的链中(S0),且还要往下移动的话,则输出查询失败 + + 2、插入 + + 3、删除 + ###### 第三部分:跳表的应用 From c7841669b58d7076b2b1be5ace5071a3ecf28209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:24:45 +0800 Subject: [PATCH 23/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index f16dede26..bbd28fe91 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -37,9 +37,13 @@ ###### 第二部分:跳表的相关操作及实现思路 操作包括查找、插入、删除,各操作实现思路如下: + 1、查找 + 在跳跃表中查找一个元素x,按照如下几个步骤进行: + 从最上层的链(Sh)的开头开始 + 假设当前位置为p,它向右指向的节点为q(p与q不一定相邻),且q的值为y。将y与x作比较 x=y 输出查询成功,输出相关信息 From f05fad035689e70558fa768a56835a705b31c2ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:46:58 +0800 Subject: [PATCH 24/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index bbd28fe91..1b311f791 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -52,10 +52,30 @@ y>x 从p向下移动一格 - 如果当前位置在最底层的链中(S0),且还要往下移动的话,则输出查询失败 + 如果当前位置在最底层的链中(S0),且还要往下移动的话,则输出查询失败。 2、插入 + 目的:在跳跃表中插入一个元素 x + + 插入操作由两部分组成: + + 查找插入的位置和插入对应元素。 + + 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中,随机函数的选择是非常有讲究的,从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: + + /***** 随机函数起始********/ + private int randomLevel(){ + int level = 1; + for(int i = 1; i < MAX_LEVEL; ++i){ //MAX_LEVEL为链条数 + if(random.nextInt() % 2 == 1){ + level++; + } + } + return level; + } + /******随机函数结束********/ + 3、删除 From 4f88b72cec70fdeaab9395cc63ef7f3b20a9fd2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 16:48:26 +0800 Subject: [PATCH 25/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 1b311f791..b87bdfff8 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -62,7 +62,8 @@ 查找插入的位置和插入对应元素。 - 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中,随机函数的选择是非常有讲究的,从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: + 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中,随机函数的选择是非常有讲究的, + 从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: /***** 随机函数起始********/ private int randomLevel(){ From a417abf6efd1d56d52e8c9b92fc89b3bc56ad780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:33:44 +0800 Subject: [PATCH 26/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index b87bdfff8..183026176 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -66,6 +66,7 @@ 从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: /***** 随机函数起始********/ + private int randomLevel(){ int level = 1; for(int i = 1; i < MAX_LEVEL; ++i){ //MAX_LEVEL为链条数 From 46dc1cb58b7491290d82b014bdf8b0dfda80272c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:34:48 +0800 Subject: [PATCH 27/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 183026176..99118754f 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -66,8 +66,7 @@ 从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: /***** 随机函数起始********/ - - private int randomLevel(){ + private int randomLevel(){ int level = 1; for(int i = 1; i < MAX_LEVEL; ++i){ //MAX_LEVEL为链条数 if(random.nextInt() % 2 == 1){ From 6fad8114808d0ea187f03e5b8b780a1e579436d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:36:42 +0800 Subject: [PATCH 28/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 99118754f..c11a6e02f 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -66,9 +66,11 @@ 从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: /***** 随机函数起始********/ - private int randomLevel(){ + private int randomLevel() + { int level = 1; - for(int i = 1; i < MAX_LEVEL; ++i){ //MAX_LEVEL为链条数 + for(int i = 1; i < MAX_LEVEL; ++i)//MAX_LEVEL为链条数 + { if(random.nextInt() % 2 == 1){ level++; } From b154509b0becb898ddfa9c3281aa4e132711a52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:40:37 +0800 Subject: [PATCH 29/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index c11a6e02f..36a87332b 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -62,9 +62,12 @@ 查找插入的位置和插入对应元素。 - 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中,随机函数的选择是非常有讲究的, - 从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。至于随机函数的选择,见下面的c++代码实现: - + 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中, + + 随机函数的选择是非常有讲究的,从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。 + + 至于随机函数的选择,见下面的C++代码实现: + c- /***** 随机函数起始********/ private int randomLevel() { @@ -78,7 +81,7 @@ return level; } /******随机函数结束********/ - + c- 3、删除 From 597315bc59a47a77f3036508b3889fb10e1d657d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:41:03 +0800 Subject: [PATCH 30/37] Update NOTE.md From 93ea62d0f4b3c0671b7862646d9f00f2b5b2531d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:42:19 +0800 Subject: [PATCH 31/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 36a87332b..03940485e 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -67,7 +67,7 @@ 随机函数的选择是非常有讲究的,从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。 至于随机函数的选择,见下面的C++代码实现: - c- + c- /***** 随机函数起始********/ private int randomLevel() { @@ -81,7 +81,7 @@ return level; } /******随机函数结束********/ - c- + c- 3、删除 From 5ad57c36130ad38b85c4168e8599bf495613bf0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:48:07 +0800 Subject: [PATCH 32/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index 03940485e..ec2add7ad 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -40,7 +40,7 @@ 1、查找 - 在跳跃表中查找一个元素x,按照如下几个步骤进行: + 在跳跃表中查找一个元素x,按照以下步骤进行: 从最上层的链(Sh)的开头开始 @@ -56,18 +56,15 @@ 2、插入 - 目的:在跳跃表中插入一个元素 x + 在跳跃表中插入一个元素x,按照以下步骤进行: - 插入操作由两部分组成: - - 查找插入的位置和插入对应元素。 + 插入的位置和插入对应元素。 当我们往跳表中插入数据的时候,我们可以通过一个随机函数,来决定这个结点插入到哪几级索引层中, 随机函数的选择是非常有讲究的,从概率上讲,能够保证跳表的索引大小和数据大小平衡性,不至于性能的过度退化。 至于随机函数的选择,见下面的C++代码实现: - c- /***** 随机函数起始********/ private int randomLevel() { @@ -81,9 +78,13 @@ return level; } /******随机函数结束********/ - c- 3、删除 - + + 从跳跃表中删除一个元素x,按照以下步骤进行: + 1)在跳跃表中查找到这个元素的位置,如果未找到,则退出 + 2)将该元素所在整列从表中删除 + 3)将多余的“空链”删除 + ###### 第三部分:跳表的应用 From 7bc0e25078684147403850fecd3acc6fc77d383d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:31:02 +0800 Subject: [PATCH 33/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index ec2add7ad..f3c8bfe16 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -3,31 +3,31 @@ ## 1.1关于新算法知识的理解 #### 【536-Week1】关于跳表的理解 -本周对相对陌生的跳表进行总结,以掌握思想为主,通过课上学习和查找相关材料,总结内容包括: + 本周对相对陌生的跳表进行总结,以掌握思想为主,通过课上学习和查找相关材料,总结内容包括: -1、跳表的定义; + 1、跳表的定义; -2、跳表的相关操作及实现思路; + 2、跳表的相关操作及实现思路; -3、跳表的应用; + 3、跳表的应用; ###### 第一部分:跳表的定义 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的时间复杂度均为O(logn),有着近乎替代平衡树的本领。而且最重要的一点,就是它的编程复杂度较同类的AVL树,红黑树等要低得多,这使得其无论是在理解还是在推广性上,都有着十分明显的优势。 1、跳跃表的结构 - 跳跃表由多条链构成(S0,S1,S2 ……,Sh),且满足如下三个条件: + 跳跃表由多条链构成(S0,S1,S2 ……,Sh),且满足如下三个条件: - (1)每条链必须包含两个特殊元素:+∞ 和 -∞; + (1)每条链必须包含两个特殊元素:+∞ 和 -∞; - (2)S0包含所有的元素,并且所有链中的元素按照升序排列; + (2)S0包含所有的元素,并且所有链中的元素按照升序排列; - (3)每条链中的元素集合必须包含于序数较小的链的元素集合。 + (3)每条链中的元素集合必须包含于序数较小的链的元素集合。 2、跳跃表的时间及空间复杂度 - 空间复杂度: O(n) + 空间复杂度: O(n) - 时间复杂度: + 时间复杂度: (1)查找: O(logn) @@ -81,17 +81,29 @@ 3、删除 从跳跃表中删除一个元素x,按照以下步骤进行: + 1)在跳跃表中查找到这个元素的位置,如果未找到,则退出 + 2)将该元素所在整列从表中删除 + 3)将多余的“空链”删除 - - ###### 第三部分:跳表的应用 + 使用跳跃表的产品: + + 1、Lucene, elasticSearch + 2、Redis: + + Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射, + + 而跳跃表里存放的 是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。 +###### 写在最后 - + 1、要深刻理解跳表,需要自己动手用代码实现一遍,这个暂且搁置后续实现; + + 2、leetcode涉及跳表题目:1206 设计跳表; ## 1.2其他感想 From 0abbd54de7c7f0369251faa13a46eb1519ebe2a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:33:19 +0800 Subject: [PATCH 34/37] Update NOTE.md --- Week 01/id_536/NOTE.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Week 01/id_536/NOTE.md b/Week 01/id_536/NOTE.md index f3c8bfe16..9fe159b35 100644 --- a/Week 01/id_536/NOTE.md +++ b/Week 01/id_536/NOTE.md @@ -95,9 +95,11 @@ 2、Redis: - Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射, + Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序, - 而跳跃表里存放的 是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。 + HashMap里放的是成员到score的映射,而跳跃表里存放的 是所有的成员,排序依据是HashMap里存的score, + + 使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。 ###### 写在最后 From 1736beee0aff50d329c9dff901846d14bad16e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:38:38 +0800 Subject: [PATCH 35/37] Update NOTE.md From 7549a65284582082f60bd53872d2676dbd18c46d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B3=B0?= <55610465+barryxt@users.noreply.github.com> Date: Sun, 20 Oct 2019 10:23:48 +0800 Subject: [PATCH 36/37] Create leetcode_1_536.cpp --- Week 01/id_536/leetcode_1_536.cpp | 92 +++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Week 01/id_536/leetcode_1_536.cpp diff --git a/Week 01/id_536/leetcode_1_536.cpp b/Week 01/id_536/leetcode_1_536.cpp new file mode 100644 index 000000000..95338aca6 --- /dev/null +++ b/Week 01/id_536/leetcode_1_536.cpp @@ -0,0 +1,92 @@ +#include +#include +#include + +using namespace std; + +class Solution { +public: + /********* + ⷨ1 + ********/ + vector twoSum1(vector& nums, int target) { + int i,j; + vector res; + for(i=0;i twoSum2(vector& nums, int target) { + map iMap; + vector res; + int i,temp; + for(i=0;i twoSum3(vector& nums, int target) { + map iMap; + vector res; + int i,temp; + for(i=0;i nums,res; + /******* + ²֤ + *****/ + nums.push_back(2); + nums.push_back(7); + nums.push_back(11); + nums.push_back(15); + res=s.twoSum3(nums,9); + for(int i=0;i Date: Sun, 20 Oct 2019 23:26:04 +0800 Subject: [PATCH 37/37] Create leetcode_66_536.cpp --- Week 01/id_536/leetcode_66_536.cpp | 83 ++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Week 01/id_536/leetcode_66_536.cpp diff --git a/Week 01/id_536/leetcode_66_536.cpp b/Week 01/id_536/leetcode_66_536.cpp new file mode 100644 index 000000000..4394502e6 --- /dev/null +++ b/Week 01/id_536/leetcode_66_536.cpp @@ -0,0 +1,83 @@ +#include +#include + +using namespace std; + +class Solution { +public: + /******* + ⷨ1תΪ1ת + ýⷨᵼԽ磬Ҫ + ******/ + vector plusOne1(vector& digits) { + int i,temp,ten; + temp = 0; + ten = 1; + vector res; + for(i = digits.size()-1; i >= 0; --i) + { + temp += digits[i] * ten;//תΪ + ten *= 10; + } + temp += 1;//ĿҪ1 + + if(temp / ten) //жλǷλ1 + { + res.push_back(1); + temp %= ten; + } + ten /= 10; + while(ten) + { + res.push_back(temp/ten); + temp %= ten; + ten /= 10; + } + return res; + } + + /****** + ⷨ2ÿλӡ + 1ȫ91299->1300 + 2ȫ99999->10000 + ******/ + vector plusOne2(vector& digits) { + int i; + for(i=digits.size()-1;i>=0;--i) + { + if(digits[i] == 9) + { + digits[i] = 0; + } + else + { + digits[i] += 1; + break; + } + } + if(i == -1 && digits[0] == 0)//ȫ9 + { + digits.push_back(0); + digits[0] = 1; + } + return digits; + } +}; + +/***** + ²Դ +****/ +int main() +{ + vector nums,res; + Solution s; + nums.push_back(9); + nums.push_back(3); + nums.push_back(9); + res = s.plusOne1(nums); + for(int i=0;i