From 84569b8cd06a7181e59c032cfeb213ce81cc7774 Mon Sep 17 00:00:00 2001 From: Kian Kwok Date: Wed, 11 Nov 2020 11:37:25 +0800 Subject: [PATCH 01/71] =?UTF-8?q?Update=20=E5=8A=A8=E6=80=81=E8=A7=84?= =?UTF-8?q?=E5=88=92=E8=AE=BE=E8=AE=A1=EF=BC=9A=E6=9C=80=E9=95=BF=E9=80=92?= =?UTF-8?q?=E5=A2=9E=E5=AD=90=E5=BA=8F=E5=88=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit create problem-300 c++ --- ...36\345\255\220\345\272\217\345\210\227.md" | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" index c905a6095e..b1ee2a9b1a 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" @@ -215,4 +215,45 @@ public int lengthOfLIS(int[] nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Kian](https://github.com/KianKw/) 提供 C++ 代码 + +```c++ +class Solution { +public: + int lengthOfLIS(vector& nums) { + /* len 为牌的数量 */ + int len = nums.size(); + vector top(len, 0); + /* 牌堆数初始化为0 */ + int piles = 0; + for (int i = 0; i < len; i++) { + /* nums[i] 为要处理的扑克牌 */ + int poker = nums[i]; + + /***** 搜索左侧边界的二分查找 *****/ + int left = 0, right = piles; + while (left < right) { + int mid = left + (right - left) / 2; + if (top[mid] > poker) { + right = mid; + } else if (top[mid] < poker) { + left = mid + 1; + } else if (top[mid] == poker) { + right = mid; + } + } + /*********************************/ + + /* 没找到合适的牌堆,新建一堆 */ + if (left == piles) + piles++; + /* 把这张牌放到牌堆顶 */ + top[left] = poker; + } + /* 牌堆数就是 LIS 长度 */ + return piles; + } +}; +``` From d0f78c9b7ae615d9af9fc80b8eb05d351a174acb Mon Sep 17 00:00:00 2001 From: Rui Yang <35053274+littlecry@users.noreply.github.com> Date: Tue, 10 Nov 2020 22:57:11 -0600 Subject: [PATCH 02/71] =?UTF-8?q?Update=20=E5=8D=95=E8=B0=83=E6=A0=88.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add Java solution for Leetcode 739. Daily Temperatures --- .../\345\215\225\350\260\203\346\240\210.md" | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index fca0ca8a25..7853fc1cd5 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -181,4 +181,19 @@ vector nextGreaterElements(vector& nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +// 739. Daily Temperatures +class Solution { + public int[] dailyTemperatures(int[] T) { + Stack stack = new Stack<>(); + int[] ans = new int[T.length]; + for (int i = 0; i < T.length; i++) { + while (!stack.isEmpty() && T[i] > T[stack.peek()]) { + int index = stack.pop(); + ans[index] = i - index; + } + stack.push(i); + } + return ans; + } +} From 91e56f8727f7d5ef1ec5bd1da9944f89592fd196 Mon Sep 17 00:00:00 2001 From: Rui Yang <35053274+littlecry@users.noreply.github.com> Date: Tue, 10 Nov 2020 23:16:02 -0600 Subject: [PATCH 03/71] =?UTF-8?q?Update=20=E5=8D=95=E8=B0=83=E6=A0=88.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add comments --- .../\345\215\225\350\260\203\346\240\210.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index 7853fc1cd5..cd68be1767 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -188,8 +188,10 @@ class Solution { Stack stack = new Stack<>(); int[] ans = new int[T.length]; for (int i = 0; i < T.length; i++) { + // 如果压栈之后不满足单调递减,弹出元素,直至保持单调性 while (!stack.isEmpty() && T[i] > T[stack.peek()]) { int index = stack.pop(); + // 被弹出的元素(T[index])都是小于当前的元素(T[i]),由于栈内元素单调递减,大于被弹出元素(index)的最近的就是当前元素(i) ans[index] = i - index; } stack.push(i); From 93eada462d65a454b3be91c3d1633c0905b4e495 Mon Sep 17 00:00:00 2001 From: MoguCloud Date: Wed, 11 Nov 2020 13:33:41 +0800 Subject: [PATCH 04/71] =?UTF-8?q?=E3=80=9028.=E5=AE=9E=E7=8E=B0=20strStr()?= =?UTF-8?q?=E3=80=91=E3=80=90Python=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...71\351\205\215\347\256\227\346\263\225.md" | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" index a0cc4cef17..5cde805a16 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" @@ -431,4 +431,40 @@ KMP 算法也就是动态规划那点事,我们的公众号文章目录有一

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +[MoguCloud](https://github.com/MoguCloud) 提供 实现 strStr() 的 Python 完整代码: +```py +class Solution: + def strStr(self, haystack: str, needle: str) -> int: + # 边界条件判断 + if not needle: + return 0 + pat = needle + txt = haystack + + M = len(pat) + # dp[状态][字符] = 下个状态 + dp = [[0 for _ in range(256)] for _ in pat] + # base case + dp[0][ord(pat[0])] = 1 + # 影子状态 X 初始化为 0 + X = 0 + for j in range(1, M): + for c in range(256): + dp[j][c] = dp[X][c] + dp[j][ord(pat[j])] = j + 1 + # 更新影子状态 + X = dp[X][ord(pat[j])] + + N = len(txt) + # pat 初始状态为 0 + j = 0 + for i in range(N): + # 计算 pat 的下一个状态 + j = dp[j][ord(txt[i])] + # 到达终止态,返回结果 + if j == M: + return i - M + 1 + # 没到达终止态,匹配失败 + return -1 +``` From 9606d3437f148a32236fd55342faedb9b40994d6 Mon Sep 17 00:00:00 2001 From: Victor Wu Date: Wed, 11 Nov 2020 13:37:05 +0800 Subject: [PATCH 05/71] =?UTF-8?q?=E4=B8=BA=E8=AE=BE=E8=AE=A1Twitter?= =?UTF-8?q?=E4=B8=80=E6=96=87=EF=BC=8C=E5=AE=9E=E7=8E=B0C++=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 严格遵守框架。时间戳改成全局变量,并分模块拆开写(参照Java思路) --- .../\350\256\276\350\256\241Twitter.md" | 119 +++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" index 399fbbbd28..5f6c5f53c1 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" @@ -302,4 +302,121 @@ PS:本文前两张图片和 GIF 是我第一次尝试用平板的绘图软件

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[happy-yuxuan](https://github.com/happy-yuxuan) 提供 C++ 代码: + +```c++ +static int timestamp = 0; +class Tweet { +private: + int id; + int time; +public: + Tweet *next; + // id为推文内容,time为发文时间 + Tweet(int id, int time) { + this->id = id; + this->time = time; + next = nullptr; + } + int getId() const { + return this->id; + } + int getTime() const { + return this->time; + } +}; +class User { +private: + int id; +public: + Tweet *head; // 发布的Twitter,用链表表示 + unordered_set followed; // 用户关注了那些人 + User(int userId) { + this->id = userId; + head = nullptr; + // 要先把自己关注了 + followed.insert(id); + } + void follow(int userId) { + followed.insert(userId); + } + void unfollow(int userId) { + // 不可以取关自己 + if (userId != this->id) + followed.erase(userId); + } + void post(int contentId) { + Tweet *twt = new Tweet(contentId, timestamp); + timestamp++; + // 将新建的推文插入链表头 + // 越靠前的推文 timestamp 值越大 + twt->next = head; + head = twt; + } +}; +class Twitter { +private: + // 映射将 userId 和 User 对象对应起来 + unordered_map userMap; + // 判断该用户存不存在系统中,即userMap中存不存在id + inline bool contain(int id) { + return userMap.find(id) != userMap.end(); + } +public: + Twitter() { + userMap.clear(); + } + /* user 发表一条 tweet 动态 */ + void postTweet(int userId, int tweetId) { + if (!contain(userId)) + userMap[userId] = new User(userId); + userMap[userId]->post(tweetId); + } + /* 返回该 user 关注的人(包括他自己)最近的动态 id, + 最多 10 条,而且这些动态必须按从新到旧的时间线顺序排列。*/ + vector getNewsFeed(int userId) { + vector ret; + if (!contain(userId)) return ret; + // 构造一个自动通过Tweet发布的time属性从大到小排序的二叉堆 + typedef function Compare; + Compare cmp = [](const Tweet *a, const Tweet *b) { + return a->getTime() < b->getTime(); + }; + priority_queue, Compare> q(cmp); + // 关注列表的用户Id + unordered_set &users = userMap[userId]->followed; + // 先将所有链表头节点插入优先级队列 + for (int id : users) { + if (!contain(id)) continue; + Tweet *twt = userMap[id]->head; + if (twt == nullptr) continue; + q.push(twt); + } + while (!q.empty()) { + Tweet *t = q.top(); q.pop(); + ret.push_back(t->getId()); + if (ret.size() == 10) return ret; // 最多返回 10 条就够了 + if (t->next) + q.push(t->next); + } + return ret; + } + /* follower 关注 followee */ + void follow(int followerId, int followeeId) { + // 若 follower 不存在,则新建 + if (!contain(followerId)) + userMap[followerId] = new User(followerId); + // 若 followee 不存在,则新建 + if (!contain(followeeId)) + userMap[followeeId] = new User(followeeId); + userMap[followerId]->follow(followeeId); + } + /* follower 取关 followee,如果 Id 不存在则什么都不做 */ + void unfollow(int followerId, int followeeId) { + if (contain(followerId)) + userMap[followerId]->unfollow(followeeId); + } +}; +``` \ No newline at end of file From 0ac247684ae8833de785130a950dd52ca661370e Mon Sep 17 00:00:00 2001 From: tonytang731 <50162066+tonytang731@users.noreply.github.com> Date: Wed, 11 Nov 2020 00:51:19 -0500 Subject: [PATCH 06/71] =?UTF-8?q?[875.=20koko=E5=81=B7=E9=A6=99=E8=95=89][?= =?UTF-8?q?Python3]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ko\345\201\267\351\246\231\350\225\211.md" | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" index cc880dd268..75109d6d11 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" @@ -169,4 +169,43 @@ for (int i = 0; i < n; i++)

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +```python +import math + +class Solution: + def minEatingSpeed(self, piles, H): + # 初始化起点和终点, 最快的速度可以一次拿完最大的一堆 + start = 1 + end = max(piles) + + # while loop进行二分查找 + while start + 1 < end: + mid = start + (end - start) // 2 + + # 如果中点所需时间大于H, 我们需要加速, 将起点设为中点 + if self.timeH(piles, mid) > H: + start = mid + # 如果中点所需时间小于H, 我们需要减速, 将终点设为中点 + else: + end = mid + + # 提交前确认起点是否满足条件,我们要尽量慢拿 + if self.timeH(piles, start) <= H: + return start + + # 若起点不符合, 则中点是答案 + return end + + + + def timeH(self, piles, K): + # 初始化时间 + H = 0 + + #求拿每一堆需要多长时间 + for pile in piles: + H += math.ceil(pile / K) + + return H +``` From 4870bf9504542870f41e2762cab28785158229d1 Mon Sep 17 00:00:00 2001 From: Victor Wu Date: Wed, 11 Nov 2020 13:52:53 +0800 Subject: [PATCH 07/71] =?UTF-8?q?=E8=A1=A5=E5=85=85Java=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=AD=E6=BC=8F=E6=8E=89=E4=BA=86=E4=B8=80=E4=B8=AA=E5=A4=A7?= =?UTF-8?q?=E6=8B=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" index 844b5cb6ff..5d65c2a402 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" @@ -89,6 +89,7 @@ int missingNumber(int[] nums) { for (int x : nums) sum += x; return expect - sum; +} ``` 你看,这种解法应该是最简单的,但说实话,我自己也没想到这个解法,而且我去问了几个大佬,他们也没想到这个最简单的思路。相反,如果去问一个初中生,他也许很快就能想到。 From c1237d7155658f77b7f26426ca36b5ee9b09caa6 Mon Sep 17 00:00:00 2001 From: tonytang731 <50162066+tonytang731@users.noreply.github.com> Date: Wed, 11 Nov 2020 01:06:53 -0500 Subject: [PATCH 08/71] =?UTF-8?q?Update=20koko=E5=81=B7=E9=A6=99=E8=95=89.?= =?UTF-8?q?md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../koko\345\201\267\351\246\231\350\225\211.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" index 75109d6d11..635291c68c 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" @@ -170,6 +170,8 @@ for (int i = 0; i < n; i++)

======其他语言代码====== + +[tonytang731](https://https://github.com/tonytang731) 提供 Python3 代码: ```python import math From cd51fcf2b62b7a242d3d21949254e1a233207d76 Mon Sep 17 00:00:00 2001 From: Victor Wu Date: Wed, 11 Nov 2020 14:02:23 +0800 Subject: [PATCH 09/71] =?UTF-8?q?=E3=80=90268.=20=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E5=AD=97=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...61\347\232\204\345\205\203\347\264\240.md" | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" index 844b5cb6ff..50556baa6f 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" @@ -132,4 +132,49 @@ public int missingNumber(int[] nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[happy-yuxuan](https://github.com/happy-yuxuan) 提供 三种方法的 C++ 代码: + +```c++ +// 方法:异或元素和索引 +int missingNumber(vector& nums) { + int n = nums.size(); + int res = 0; + // 先和新补的索引异或一下 + res ^= n; + // 和其他的元素、索引做异或 + for (int i = 0; i < n; i++) + res ^= i ^ nums[i]; + return res; +} +``` + +```c++ +// 方法:等差数列求和 +int missingNumber(vector& nums) { + int n = nums.size(); + // 公式:(首项 + 末项) * 项数 / 2 + int expect = (0 + n) * (n + 1) / 2; + int sum = 0; + for (int x : nums) + sum += x; + return expect - sum; +} +``` + +```c++ +// 方法:防止整型溢出 +int missingNumber(vector& nums) { + int n = nums.size(); + int res = 0; + // 新补的索引 + res += n - 0; + // 剩下索引和元素的差加起来 + for (int i = 0; i < n; i++) + res += i - nums[i]; + return res; +} +``` + + From 88fe014eb64275d4909f7f27fa03fd2246dbdca3 Mon Sep 17 00:00:00 2001 From: Justlxb0124 <33374844+Justlxb0124@users.noreply.github.com> Date: Wed, 11 Nov 2020 14:23:01 +0800 Subject: [PATCH 10/71] =?UTF-8?q?Update=20=E5=8D=95=E8=B0=83=E9=98=9F?= =?UTF-8?q?=E5=88=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...25\350\260\203\351\230\237\345\210\227.md" | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" index eb298a1172..d82dbe06d4 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" @@ -210,4 +210,51 @@ vector maxSlidingWindow(vector& nums, int k) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +```java +class Solution { + public int[] maxSlidingWindow(int[] nums, int k) { + int len = nums.length; + // 判断数组或者窗口长度为0的情况 + if (len * k == 0) { + return new int[0]; + } + + /* + 采用两端扫描的方法 + 将数组分成大小为 k 的若干个窗口, 对每个窗口分别从左往右和从右往左扫描, 记录扫描的最大值 + left[] 记录从左往右扫描的最大值 + right[] 记录从右往左扫描的最大值 + */ + int[] left = new int[len]; + int[] right = new int[len]; + + for (int i = 0; i < len; i = i + k) { + // 每个窗口中的第一个值 + left[i] = nums[i]; + // 窗口的最后边界 + int index = i + k - 1 >= len ? len - 1 : i + k - 1; + // 每个窗口的最后一个值 + right[index] = nums[index]; + // 对该窗口从左往右扫描 + for (int j = i + 1; j <= index; j++) { + left[j] = Math.max(left[j - 1], nums[j]); + } + // 对该窗口从右往左扫描 + for (int j = index - 1; j >= i; j--) { + right[j] = Math.max(right[j + 1], nums[j]); + } + } + + int[] arr = new int[len - k + 1]; + + // 对于第 i 个位置, 它一定是该窗口从右往左扫描数组中的最后一个值, 相对的 i + k - 1 是该窗口从左向右扫描数组中的最后一个位置 + // 对两者取最大值即可 + for (int i = 0; i < len - k + 1; i++) { + arr[i] = Math.max(right[i], left[i + k - 1]); + } + + return arr; + } +} +``` From a72173b1ef5c3660b47b8364ca3e19ee5a7b7478 Mon Sep 17 00:00:00 2001 From: dekunma <53892579+dekunma@users.noreply.github.com> Date: Wed, 11 Nov 2020 14:23:51 +0800 Subject: [PATCH 11/71] =?UTF-8?q?=E3=80=90392.=20=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E5=AD=90=E5=BA=8F=E5=88=97=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...32\345\255\220\345\272\217\345\210\227.md" | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" index c71e65f05a..e9c5b0fb51 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" @@ -168,4 +168,67 @@ boolean isSubsequence(String s, String t) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +[dekunma](https://www.linkedin.com/in/dekun-ma-036a9b198/) 提供C++代码 +**解法一:遍历(也可以用双指针):** +```C++ +class Solution { +public: + bool isSubsequence(string s, string t) { + // 遍历s + for(int i = 0; i < s.size(); i++) { + // 找到s[i]字符在t中的位置 + size_t pos = t.find(s[i]); + + // 如果s[i]字符不在t中,返回false + if(pos == std::string::npos) return false; + // 如果s[i]在t中,后面就只看pos以后的字串,防止重复查找 + else t = t.substr(pos + 1); + } + return true; + } +}; +``` + +**解法二:二分查找:** +```C++ +class Solution { +public: + bool isSubsequence(string s, string t) { + int m = s.size(), n = t.size(); + // 对 t 进行预处理 + vector index[256]; + for (int i = 0; i < n; i++) { + char c = t[i]; + index[c].push_back(i); + } + // 串 t 上的指针 + int j = 0; + // 借助 index 查找 s[i] + for (int i = 0; i < m; i++) { + char c = s[i]; + // 整个 t 压根儿没有字符 c + if (index[c].empty()) return false; + int pos = left_bound(index[c], j); + // 二分搜索区间中没有找到字符 c + if (pos == index[c].size()) return false; + // 向前移动指针 j + j = index[c][pos] + 1; + } + return true; + } + // 查找左侧边界的二分查找 + int left_bound(vector arr, int tar) { + int lo = 0, hi = arr.size(); + while (lo < hi) { + int mid = lo + (hi - lo) / 2; + if (tar > arr[mid]) { + lo = mid + 1; + } else { + hi = mid; + } + } + return lo; + } +}; +``` From 1c871a9eb0d5a556b41409ac86750b878dd72e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=8A=9B?= <171250568@smail.nju.edu.cn> Date: Wed, 11 Nov 2020 14:41:25 +0800 Subject: [PATCH 12/71] =?UTF-8?q?=E3=80=90645.=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=9B=86=E5=90=88=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\347\232\204\345\205\203\347\264\240.md" | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" index 06e554f1c8..52c8d7859f 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" @@ -1,4 +1,4 @@ -# 如何寻找缺失和重复的元素 +# 如何寻找缺失和重复的元素

@@ -139,4 +139,30 @@ vector findErrorNums(vector& nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[zhuli](https://github.com/1097452462 "zhuli")提供的Java代码: +```java +class Solution { + public int[] findErrorNums(int[] nums) { + int n = nums.length; + int dup = -1; + for (int i = 0; i < n; i++) { + // 元素是从 1 开始的 + int index = Math.abs(nums[i]) - 1; + // nums[index] 小于 0 则说明重复访问 + if (nums[index] < 0) + dup = Math.abs(nums[i]); + else + nums[index] *= -1; + } + int missing = -1; + for (int i = 0; i < n; i++) + // nums[i] 大于 0 则说明没有访问 + if (nums[i] > 0) + // 将索引转换成元素 + missing = i + 1; + return new int[]{dup, missing}; + } +} +``` \ No newline at end of file From ac37263996303704f162df98bf90358c426bfbef Mon Sep 17 00:00:00 2001 From: Chenjie Xu Date: Wed, 11 Nov 2020 15:07:41 +0800 Subject: [PATCH 13/71] =?UTF-8?q?=E3=80=9098.=20=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BA=8C=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E3=80=91=E3=80=90?= =?UTF-8?q?Python=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\344\275\234\351\233\206\351\224\246.md" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index 6c056262d7..8281c2059e 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -309,3 +309,26 @@ void BST(TreeNode root, int target) {

+ +[ChenjieXu](https://github.com/ChenjieXu)提供第98题Python3代码: + +```python +def isValidBST(self, root): + # 递归函数 + def helper(node, lower = float('-inf'), upper = float('inf')): + if not node: + return True + + val = node.val + if val <= lower or val >= upper: + return False + # 右节点 + if not helper(node.right, val, upper): + return False + # 左节点 + if not helper(node.left, lower, val): + return False + return True + + return helper(root) +``` From 65e137edb75ba5bcbfdf571155c6cf6cbc11863b Mon Sep 17 00:00:00 2001 From: Volvane Date: Wed, 11 Nov 2020 15:26:31 +0800 Subject: [PATCH 14/71] =?UTF-8?q?Update=20LRU=E7=AE=97=E6=B3=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 146题C++代码 --- .../LRU\347\256\227\346\263\225.md" | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" index b9ca311c32..23e0b6556e 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" @@ -346,4 +346,90 @@ class LRUCache {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[gowufang](https://github.com/gowufang)提供第146题C++代码: +```cpp +class LRUCache { + public: + struct node { + int val; + int key; + node* pre;//当前节点的前一个节点 + node* next;//当前节点的后一个节点 + node(){} + node(int key, int val):key(key), val(val), pre(NULL), next(NULL){} + }; + + LRUCache(int size) { + this->size = size; + head = new node(); + tail = new node(); + head->next = tail; + tail->pre = head; + } + + + void movetohead(node* cur)//相当于一个insert操作,在head 和 head的next之间插入一个节点 + { + node* next = head->next;//head的next先保存起来 + head->next = cur;//将当前节点移动到head的后面 + cur->pre = head;//当前节点cur的pre指向head + next->pre = cur; + cur->next = next; + } + + node* deletecurrentnode(node* cur)//移除当前节点 + { + cur->pre->next = cur->next; + cur->next->pre = cur->pre; + return cur; + } + void makerecently(node* cur) + { + node* temp = deletecurrentnode(cur);// 删除 cur,要重新插入到对头 + movetohead(temp);//cur放到队头去 + } + int get(int key) + { + int ret = -1; + if ( map.count(key)) + { + node* temp = map[key]; + makerecently(temp);// 将 key 变为最近使用 + ret = temp->val; + } + return ret; + } + + void put(int key, int value) { + if ( map.count(key)) + { + // 修改 key 的值 + node* temp = map[key]; + temp->val = value; + // 将 key 变为最近使用 + makerecently(temp); + } + else + { + node* cur = new node(key, value); + if( map.size()== size ) + { + // 链表头部就是最久未使用的 key + node *temp = deletecurrentnode(tail->pre); + map.erase(temp->key); + } + movetohead(cur); + map[key] = cur; + + } + + } + + unordered_map map; + int size; + node* head, *tail; + + }; + ``` From 022fe8afccac97df3b5a071799e032a3f1b935f0 Mon Sep 17 00:00:00 2001 From: lixiandea Date: Wed, 11 Nov 2020 15:37:34 +0800 Subject: [PATCH 15/71] =?UTF-8?q?=E3=80=90100.=20=E7=9B=B8=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E6=A0=91=E3=80=91=E3=80=90Python=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\344\275\234\351\233\206\351\224\246.md" | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index 801b8fbc4a..45b77df434 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -310,4 +310,29 @@ void BST(TreeNode root, int target) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[lixiandea](https://github.com/lixiandea)提供第100题Python3代码: +```python3 +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def isSameTree(self, p: TreeNode, q: TreeNode) -> bool: + ''' + 当前节点值相等且树的子树相等,则树相等。 + 递归退出条件:两个节点存在一个节点为空 + ''' + if p == None: + if q == None: + return True + else: + return False + if q == None: + return False + # 当前节点相同且左子树和右子树分别相同 + return p.val==q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) +``` \ No newline at end of file From ce67219141fbe62377facafe1024a81a3ad3eb85 Mon Sep 17 00:00:00 2001 From: hzs Date: Wed, 11 Nov 2020 16:03:43 +0800 Subject: [PATCH 16/71] =?UTF-8?q?[239.=E6=BB=91=E5=8A=A8=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E5=80=BC]=20[Python]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...25\350\260\203\351\230\237\345\210\227.md" | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" index eb298a1172..41b494f5a0 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" @@ -210,4 +210,52 @@ vector maxSlidingWindow(vector& nums, int k) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +python3版本 + +```python +from collections import deque + +class MonotonicQueue(object): + def __init__(self): + # 双端队列 + self.data = deque() + + def push(self, n): + # 实现单调队列的push方法 + while self.data and self.data[-1] < n: + self.data.pop() + self.data.append(n) + + def max(self): + # 取得单调队列中的最大值 + return self.data[0] + + def pop(self, n): + # 实现单调队列的pop方法 + if self.data and self.data[0] == n: + self.data.popleft() + + +class Solution: + def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: + # 单调队列实现的窗口 + window = MonotonicQueue() + + # 结果 + res = [] + + for i in range(0, len(nums)): + + if i < k-1: + # 先填满窗口前k-1 + window.push(nums[i]) + else: + # 窗口向前滑动 + window.push(nums[i]) + res.append(window.max()) + window.pop(nums[i-k+1]) + return res + +``` \ No newline at end of file From 42845993b606dc6d3b54bcba29e37ee8d26dda48 Mon Sep 17 00:00:00 2001 From: Andrew <920076768@qq.com> Date: Wed, 11 Nov 2020 16:18:15 +0800 Subject: [PATCH 17/71] =?UTF-8?q?Update=20=E9=80=92=E5=BD=92=E5=8F=8D?= =?UTF-8?q?=E8=BD=AC=E9=93=BE=E8=A1=A8=E7=9A=84=E4=B8=80=E9=83=A8=E5=88=86?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加了python版本代码 --- ...04\344\270\200\351\203\250\345\210\206.md" | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" index 830e50372a..1f8bca2848 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" @@ -218,4 +218,40 @@ ListNode reverseBetween(ListNode head, int m, int n) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[DiamondI](https://github.com/DiamondI) 提供python3版本代码: + +思路:递归。时间复杂度为O(n),由于递归调用需要借助栈的空间,因此空间复杂度亦为O(n)。 + +```python3 +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def __init__(self): + self.__successor = None + + def __reverseN(self, head: ListNode, n: int) -> ListNode: + if n == 1: + # 记录第 n + 1 个节点 + self.__successor = head.next; + return head; + # 以 head.next 为起点,需要反转前 n - 1 个节点 + last = self.__reverseN(head.next, n - 1); + + head.next.next = head; + # 让反转之后的 head 节点和后面的节点连起来 + head.next = self.__successor; + return last; + + def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: + # base case + if m == 1: + return self.__reverseN(head, n); + # 前进到反转的起点触发 base case + head.next = self.reverseBetween(head.next, m - 1, n - 1); + return head; +``` From c786b6ab43c7c24e55b4877ea6c1afafae1a2179 Mon Sep 17 00:00:00 2001 From: hzs Date: Wed, 11 Nov 2020 16:19:53 +0800 Subject: [PATCH 18/71] =?UTF-8?q?=E3=80=90239.=E6=BB=91=E5=8A=A8=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E6=9C=80=E5=A4=A7=E5=80=BC=E3=80=91=E3=80=90Python?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\215\225\350\260\203\351\230\237\345\210\227.md" | 4 ++++ 1 file changed, 4 insertions(+) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" index 41b494f5a0..094e5109b4 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" @@ -210,10 +210,14 @@ vector maxSlidingWindow(vector& nums, int k) {

+ ======其他语言代码====== python3版本 +由[SCUHZS](ttps://github.com/brucecat)提供 + + ```python from collections import deque From 0a4bddfe2b3a540476920d50c17c6457e86344be Mon Sep 17 00:00:00 2001 From: forthespada <44971298+forthespada@users.noreply.github.com> Date: Wed, 11 Nov 2020 16:21:27 +0800 Subject: [PATCH 19/71] =?UTF-8?q?=E3=80=90234.=E6=BB=91=E5=8A=A8=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E6=9C=80=E5=A4=A7=E5=80=BC=E3=80=91=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E6=96=87=E9=93=BE=E8=A1=A8=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...36\346\226\207\351\223\276\350\241\250.md" | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" index 3e2406886f..4d0225a5e0 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" @@ -237,4 +237,35 @@ p.next = reverse(q);

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +C++版本: +```cpp + bool isPalindrome(ListNode* head) { + if (head == nullptr || head->next == nullptr) //为空或者只有一个节点时,直接判断为true + return true; + ListNode* slow = head, * fast = head; + while (fast != nullptr) {//首先找到中间节点 + slow = slow->next; + fast = fast->next == nullptr? fast->next:fast->next->next; //因为链表长度可能是奇数或偶数,所以需要进行判断 + } + + ListNode* temp = nullptr,* pre = nullptr;//pre始终保持后续链表的头部,temp节点则作为中间零时替换的节点 + while (slow != nullptr) {//利用头插法,将当前节点与后续链表断链处理,反转后半部分的链表 + temp = slow->next; + slow->next = pre;//建立连接 + pre = slow;//pre始终作为后续链表的头部 + slow = temp; + } + + while (head !=nullptr && pre != nullptr) {//同步进行比较 + if (head->val != pre->val) {//值有不一样的,说明不是回文联表,直接返回false了 + return false; + } + head = head->next;//head向下走,直到走到空 + pre = pre->next;//pre节点也向下走,直到走到空 + } + return true;//到此说明当前链表是回文链表返回true即可 + } + +``` From 6b55d3eceb7c3930552126d39e1da2d649493d9f Mon Sep 17 00:00:00 2001 From: Chenjie Xu Date: Wed, 11 Nov 2020 16:29:21 +0800 Subject: [PATCH 20/71] =?UTF-8?q?=E3=80=9072.=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=B7=9D=E7=A6=BB=E3=80=91=E3=80=90Python=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...26\350\276\221\350\267\235\347\246\273.md" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" index 27b8c223aa..ae6ff4e563 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" @@ -290,3 +290,31 @@ class Node {

+ +[ChenjieXu](https://github.com/ChenjieXu) 提供Python版本代码: + +```python3 +def minDistance(word1, word2): + m, n = len(word1), len(word2) + # 创建 DP 数组 + dp = [[0] * (n + 1) for _ in range(m + 1)] + + # base case初始化 + for i in range(m + 1): + dp[i][0] = i + for j in range(n + 1): + dp[0][j] = j + + # 自底向上求解 + for i in range(1, m + 1): + for j in range(1, n + 1): + # 状态转移方程 + if word1[i - 1] == word2[j - 1]: + dp[i][j] = dp[i - 1][j - 1] + else: + dp[i][j] = min(dp[i - 1][j] + 1, + dp[i][j - 1] + 1, + dp[i - 1][j - 1] + 1) + # 储存着整个 word1 和 word2 的最小编辑距离 + return dp[m][n] +```` From 701622467245b7b960e57b3d4b1eea1b1b308e90 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 11 Nov 2020 17:08:03 +0800 Subject: [PATCH 21/71] Add 452 python3 version --- ...03\345\272\246\351\227\256\351\242\230.md" | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" index 70e27fc085..8487083a0b 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" @@ -1,4 +1,4 @@ -# 贪心算法之区间调度问题 +# 贪心算法之区间调度问题

@@ -158,4 +158,43 @@ int findMinArrowShots(int[][] intvs) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Edwenc](https://github.com/Edwenc) 提供 第452题的python3 代码: + +```python3 + +class Solution: + def findMinArrowShots(self, points: List[List[int]]) -> int: + ### 思路是把气球的左右坐标看成是区间 + ### 用最少数量的箭 相当于 找不重叠区间的个数 + ### 因为重叠的区间 用一支箭就可以全部引爆气球 + + # 首先获得区间的个数 为0的话就不用移除 + n = len(points) + if n==0: + return 0 + + # 按照每个区间的右端点值进行排序 + sorted_point = sorted( points , key=lambda x: x[1] ) + + # 不重叠区间个数至少是1 + res = 1 + + # end是所有不重叠的区间中 最大的右端点 + # end的初始值即是sorted_list[0]的右端点 + end = sorted_point[0][1] + + # 从序号1开始往后找 + for i in range(1,n): + # start是当前区间左端点值 + start = sorted_point[i][0] + # 如果当前左端点比最大右端点都严格大了 + # 说明两区间严格不重叠 count+1 再更新end + if start > end: + res += 1 + end = sorted_point[i][1] + + return res + +``` \ No newline at end of file From 2ce19ed62bce8e79fc9f40b437ae33b3266fc311 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 11 Nov 2020 17:17:08 +0800 Subject: [PATCH 22/71] Add 435 python3 version --- ...03\345\272\246\351\227\256\351\242\230.md" | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" index 70e27fc085..1865b271ee 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" @@ -1,4 +1,4 @@ -# 贪心算法之区间调度问题 +# 贪心算法之区间调度问题

@@ -158,4 +158,44 @@ int findMinArrowShots(int[][] intvs) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Edwenc](https://github.com/Edwenc) 提供 第435题的python3 代码: + +```python3 + +class Solution: + def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: + ### 思路是首先找到不重叠的区间的个数 + ### 然后再用总个数减去不重叠个数 + ### 获得的就是 需要移除的个数 + + # 首先获得区间的个数 为0的话就不用移除 + n = len(intervals) + if n==0: + return 0 + + # 按照每个区间的右端点值进行排序 + sorted_list = sorted( intervals , key=lambda x: x[1] ) + + # 不重叠区间个数至少是1 + count = 1 + + # end是所有不重叠的区间中 最大的右端点 + # end的初始值即是sorted_list[0]的右端点 + end = sorted_list[0][1] + + # 从1开始往后找 + for i in range(1,n): + # start是当前区间左端点值 + start = sorted_list[i][0] + # 如果左端点比右端点都大了(可能相等) + # 说明两区间不重叠 count+1 再更新end + if start>=end: + count += 1 + end = sorted_list[i][1] + + # 最后返回的是 需要移除的区间个数 + return n-count + +``` \ No newline at end of file From c09b441ba38c88adc75331087bd76bd4144a4a32 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 11 Nov 2020 17:19:59 +0800 Subject: [PATCH 23/71] A little modification on comment --- ...27\264\350\260\203\345\272\246\351\227\256\351\242\230.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" index 1865b271ee..05d9502616 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" @@ -185,11 +185,11 @@ class Solution: # end的初始值即是sorted_list[0]的右端点 end = sorted_list[0][1] - # 从1开始往后找 + # 从1开始往后找 因为0在上面已经取过了 for i in range(1,n): # start是当前区间左端点值 start = sorted_list[i][0] - # 如果左端点比右端点都大了(可能相等) + # 如果当前左端点比最大右端点都大了(可能相等) # 说明两区间不重叠 count+1 再更新end if start>=end: count += 1 From b8441fd99e1aca9b2affa9143274d2b215f55a91 Mon Sep 17 00:00:00 2001 From: Zane Wang Date: Wed, 11 Nov 2020 20:28:34 +1100 Subject: [PATCH 24/71] =?UTF-8?q?=E4=B8=BA=2043-=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E4=B9=98=E6=B3=95=20=E6=B7=BB=E5=8A=A0Java=E8=A7=A3?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\344\270\262\344\271\230\346\263\225.md" | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" index 0273744282..6c7f67daeb 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" @@ -101,4 +101,47 @@ string multiply(string num1, string num2) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Zane Wang](https://github.com/zanecat) 提供 Java 解法代码: +```java +public String multiply(String num1, String num2) { + // 初始化字符数组 + char[] s1 = num1.toCharArray(); + char[] s2 = num2.toCharArray(); + + // 结果长度最多为两字符串长度之和 + int[] res = new int[s1.length + s2.length]; + + // 从个位开始遍历,把两数字中每一位相乘 + for (int i = s1.length - 1; i >= 0; i--) { + for (int j = s2.length - 1; j >= 0; j--) { + // 计算乘积,并把乘积放在 res 对应的位置, 暂时不考虑进位 + res[i + j + 1] += (s1[i] - '0') * (s2[j] - '0'); + } + } + + // 从个位再次遍历,如果上一次遍历中两数乘积为两位数,进位并叠加到前面一位 + int carry = 0; + for (int i = res.length - 1; i >= 0; i--) { + int sum = res[i] + carry; + res[i] = sum % 10; + carry = sum / 10; + } + + //遍历res数组,构造最终答案字符串 + StringBuilder ans = new StringBuilder(); + int i = 0; + + // 首先找到不为0的第一位 + while (i < res.length - 1 && res[i] == 0) { + i++; + } + + // 将后面的数字附加到ans后面 + while (i < res.length) { + ans.append(res[i++]); + } + return ans.toString(); +} +``` \ No newline at end of file From 4e00179e784038b7f9aed3c54be38ee5e2b1b719 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 11 Nov 2020 17:56:09 +0800 Subject: [PATCH 25/71] Add 450 Python3 version --- ...15\344\275\234\351\233\206\351\224\246.md" | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index 801b8fbc4a..cac9c8cf13 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -1,4 +1,4 @@ -# 二叉搜索树操作集锦 +# 二叉搜索树操作集锦

@@ -310,4 +310,56 @@ void BST(TreeNode root, int target) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Edwenc](https://github.com/Edwenc) 提供 leetcode第450题的python3 代码: + +```python3 + +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right + +class Solution: + def deleteNode(self, root: TreeNode, key: int) -> TreeNode: + # 如果没有树 直接返回None + if root == None: + return None + + # 如果要删除的结点 就是当前结点 + if root.val == key: + # 左子树为空 只有右子树需要被更新 直接返回 + if root.left == None: + return root.right + # 右子树为空 只有左子树需要被更新 直接返回 + if root.right== None: + return root.left + + # 找出此结点左子树的最大值 + # 用这个最大值 来代替当前结点 + # 再在左子树中递归地删除这个最大值结点 + big = self.getMax( root.left ) + root.val = big.val + root.left = self.deleteNode( root.left , big.val ) + + # 当前结点较大 它的左子树中需要删除节点 递归到左子树 + elif root.val > key: + root.left = self.deleteNode( root.left , key) + # 当前结点较小 它的右子树中需要删除节点 递归到右子树 + else: + root.right= self.deleteNode( root.right, key) + + return root + + # 辅助函数 + # 功能是找出此二叉搜索树中最大元素的结点 并返回此结点 + def getMax( self , node ): + # 一直找它的右子树 直到为空 + while node.right: + node = node.right + return node + +``` \ No newline at end of file From 9022e60cd2937dfdf714680b2a57a57c2376aae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=B7=8D=E8=80=80-LWW?= <694125111@qq.com> Date: Wed, 11 Nov 2020 19:59:07 +0800 Subject: [PATCH 26/71] =?UTF-8?q?Update=20=E7=83=A7=E9=A5=BC=E6=8E=92?= =?UTF-8?q?=E5=BA=8F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增了Java解决方法 --- ...47\351\245\274\346\216\222\345\272\217.md" | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 513cbdca8c..cd163bf415 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -149,4 +149,74 @@ void reverse(int[] arr, int i, int j) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[L-WEIWEI](https://github.com/L-WWEEII) 提供 第969题的 Java 代码: + +```java +class Solution { + public List pancakeSort(int[] A) { + List ans = new ArrayList(); + int len = A.length; + if(len == 0){ + return ans; + } + // maxIndex[0] == 当前轮次的最大元素, maxIndex[1] == 最大元素下标 + int[] maxIndex = new int[2]; + maxIndex[0] = Integer.MIN_VALUE; + int maxCount = 0; + // maxCount == len 时,说明完成了整个数组的最大值沉底操作, + while(maxCount < len - 1){ + maxCount = maxValueDown(A, maxIndex, maxCount, ans); + // 每做完一次最大值沉底操作,初始化最大元素值 + maxIndex[0] = Integer.MIN_VALUE; + } + return ans; + } + public int maxValueDown(int[] A, int[] maxIndex, int maxCount, List ans){ + // 遍历条件为 i < A.length - maxCount , 每次最大值沉底时,maxCount + 1,因此下次遍历即可不对最后 maxCount 个元素做操作 + for(int i = 0; i < A.length - maxCount; i++){ + // 元素大于当前储存的元素时,将值与下标 copy 到 maxIndex 数组中 + if(A[i] > maxIndex[0]){ + maxIndex[0] = A[i]; + maxIndex[1] = i; + } + } + // 如果当前轮次最大元素的下标的下一位是上一轮次的最大下标,则不做翻转操作,直接返回 maxCount + 1 + if(maxIndex[1] + 1 == A.length - maxCount){ + return maxCount + 1; + } + // 使用最大值沉底时,当本轮最大值在首位时,不需要再将其先翻转至首位,所以不添加 + if(maxIndex[1] > 0){ + // 将该轮次要翻转的下标添加到结果集中,结果集中需要的是翻转的位置而不是下标,所以添加时下标得 + 1 + ans.add(maxIndex[1] + 1); + } + // 双指针原地交换数组中的值 + // 左指针指0 + int left = 0; + // 右指针指向当前轮次最大元素的下标 + int right = maxIndex[1]; + while(left < right){ + // 交换元素值 + A[left] += A[right]; + A[right] = A[left] - A[right]; + A[left] -= A[right]; + left++; + right--; + } + // 上面交换玩元素值后,当前轮次最大元素排在首位,再从上一轮次最大元素 - 1 的位置翻转 + // 则当前轮次的最大元素成功沉底 + ans.add(A.length - maxCount); + left = 0; + right = A.length - 1 - maxCount; + while(left < right){ + A[left] += A[right]; + A[right] = A[left] - A[right]; + A[left] -= A[right]; + left++; + right--; + } + return maxCount + 1; + } +} +``` From 58ce448d2b64b914373260e3fe0a5b19f69f37d6 Mon Sep 17 00:00:00 2001 From: Hoi Lung Lam Date: Wed, 11 Nov 2020 23:27:07 +1100 Subject: [PATCH 27/71] Added Python3 code for problem 3. --- ...27\345\217\243\346\212\200\345\267\247.md" | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" index e65a1041f5..5d8768b811 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" @@ -371,4 +371,31 @@ class Solution:

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + + + +第3题 Python3 代码(提供: [FaDrYL](https://github.com/FaDrYL) ): +```Python3 +def lengthOfLongestSubstring(self, s: str) -> int: + # 子字符串 + sub = "" + largest = 0 + + # 循环字符串,将当前字符加入子字符串,并检查长度 + for i in range(len(s)): + if s[i] not in sub: + # 当前字符不存在于子字符串中,加入当前字符 + sub += s[i] + else: + # 如果当前子字符串的长度超过了之前的记录 + if len(sub) > largest: + largest = len(sub) + # 将子字符串从当前字符处+1切片至最后,并加入当前字符 + sub = sub[sub.find(s[i])+1:] + s[i] + + # 如果最后的子字符串长度超过了之前的记录 + if len(sub) > largest: + return len(sub) + return largest +``` From d1dcf4cc69efa50cfd78d18481ad41f7646680db Mon Sep 17 00:00:00 2001 From: userLF <1067605626@qq.com> Date: Wed, 11 Nov 2020 21:00:41 +0800 Subject: [PATCH 28/71] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=86=E5=85=A8?= =?UTF-8?q?=E6=8E=92=E5=88=97=E7=9A=84java=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...22\345\210\227\347\273\204\345\220\210.md" | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" index 04fe3bb336..bdb6bbe9d2 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" @@ -283,5 +283,42 @@ void backtrack(int[] nums, LinkedList track) {

+======其他语言代码====== -======其他语言代码====== \ No newline at end of file +[userLF](https://github.com/userLF)提供全排列的java代码: + +```java +import java.util.ArrayList; +import java.util.List; + +class Solution { + List> res = new ArrayList<>(); + public List> permute(int[] nums) { + res.clear(); + dfs(nums, 0);// + return res; + } + + public void dfs(int[] n, int start) {//start表示要被替换元素的位置 + if( start >= n.length) { + List list = new ArrayList(); + for(int i : n) { + list.add(i); + } + res.add(list); + return; + } + + for(int i = start; i< n.length; i++) {//i从start开始,如果从start+1开始的话,会把当前序列遗漏掉直接保存了下一个序列 + int temp= n[i]; + n[i] = n[start]; + n[start] = temp; + dfs(n, start + 1);//递归下一个位置 + //回到上一个状态 + n[start] = n[i]; + n[i] = temp; + } + } +} + +``` \ No newline at end of file From 13afe04e8345d2fb7876c86f123561fb3ddb4b90 Mon Sep 17 00:00:00 2001 From: cchroot <843328872@qq.com> Date: Wed, 11 Nov 2020 21:21:20 +0800 Subject: [PATCH 29/71] =?UTF-8?q?=E3=80=90875.=20=E7=88=B1=E5=90=83?= =?UTF-8?q?=E9=A6=99=E8=95=89=E7=9A=84=E7=8F=82=E7=8F=82=E3=80=91=E3=80=90?= =?UTF-8?q?C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提供 C++ 解法 --- ...ko\345\201\267\351\246\231\350\225\211.md" | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" index cc880dd268..c44f08355e 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" @@ -169,4 +169,37 @@ for (int i = 0; i < n; i++)

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[cchroot](https://github.com/cchroot) 提供 C++ 代码: + +```c++ +class Solution { +public: + int minEatingSpeed(vector& piles, int H) { + // 二分法查找最小速度 + // 初始化最小速度为 1,最大速度为题目设定的最大值 10^9 + // 这里也可以遍历 piles 数组,获取数组中的最大值,设置 right 为数组中的最大值即可(因为每堆香蕉1小时吃完是最快的) + // log2(10^9) 约等于30,次数不多,所以这里暂时就不采取遍历获取最大值了 + int left = 1, right = pow(10, 9); + while (left < right) { // 二分法基本的防止溢出 + int mid = left + (right - left) / 2; + // 以 mid 的速度吃香蕉,是否能在 H 小时内吃完香蕉 + if (!canFinish(piles, mid, H)) + left = mid + 1; + else + right = mid; + } + return left; + } + + // 以 speed 的速度是否能把香蕉吃完 + bool canFinish(vector& piles, int speed, int H) { + int time = 0; + // 遍历累加时间 time + for (int p: piles) + time += (p - 1) / speed + 1; + return time <= H; // time 小于等于 H 说明能在 H 小时吃完返回 true, 否则返回 false + } +}; +``` From df9116647912d3a84ced39794a85384f100ba8bc Mon Sep 17 00:00:00 2001 From: LEO D PEN <33611404+LEODPEN@users.noreply.github.com> Date: Wed, 11 Nov 2020 21:25:36 +0800 Subject: [PATCH 30/71] =?UTF-8?q?leodpen=20Union-Find=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=BA=94=E7=94=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...27\346\263\225\345\272\224\347\224\250.md" | 78 ++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" index fef484a3ef..c1af151ef8 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" @@ -20,6 +20,8 @@ [990.等式方程的可满足性](https://leetcode-cn.com/problems/surrounded-regions) +[261.以图判树](https://leetcode-cn.com/problems/graph-valid-tree/) + **-----------** 上篇文章很多读者对于 Union-Find 算法的应用表示很感兴趣,这篇文章就拿几道 LeetCode 题目来讲讲这个算法的巧妙用法。 @@ -250,4 +252,78 @@ boolean equationsPossible(String[] equations) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +第261题的Java代码(提供:[LEODPEN](https://github.com/LEODPEN)) + +```java +class Solution { + + class DisjointSet { + + int count; // 连通分量的总个数 + int[] parent; // 每个节点的头节点(不一定是连通分量的最终头节点) + int[] size; // 每个连通分量的大小 + + public DisjointSet(int n) { + parent = new int[n]; + size = new int[n]; + // 初为n个连通分量,期望最后为1 + count = n; + for (int i = 0; i < n; i++) { + // 初始的连通分量只有该节点本身 + parent[i] = i; + size[i] = 1; + } + } + + /** + * @param first 节点1 + * @param second 节点2 + * @return 未连通 && 连通成功 + */ + public boolean union(int first, int second) { + // 分别找到包含first 和 second 的最终根节点 + int firstParent = findRootParent(first), secondParent = findRootParent(second); + // 相等说明已经处于一个连通分量,即说明有环 + if (firstParent == secondParent) return false; + // 将较小的连通分量融入较大的连通分量 + if (size[firstParent] >= size[secondParent]) { + parent[secondParent] = firstParent; + size[firstParent] += size[secondParent]; + } else { + parent[firstParent] = secondParent; + size[secondParent] += size[firstParent]; + } + // 连通分量已合并,count减少 + count--; + return true; + } + + /** + * @param node 某节点 + * @return 包含该节点的连通分量的最终根节点 + */ + private int findRootParent(int node) { + while (node != parent[node]) { + // 压缩路径 + parent[node] = parent[parent[node]]; + node = parent[node]; + } + return node; + } + } + + public boolean validTree(int n, int[][] edges) { + // 树的特性:节点数 = 边数 + 1 + if (edges.length != n - 1) return false; + graph_261.Solution.DisjointSet djs = new graph_261.Solution.DisjointSet(n); + for (int[] edg : edges) { + // 判断连通情况(如果合并的两个点在一个连通分量里,说明有环) + if (!djs.union(edg[0], edg[1])) return false; + } + // 是否全部节点均已相连 + return djs.count == 1; + } +} +``` From b946853ee8479241f349c721ac15c6922fc4879d Mon Sep 17 00:00:00 2001 From: cchroot <843328872@qq.com> Date: Wed, 11 Nov 2020 21:30:17 +0800 Subject: [PATCH 31/71] =?UTF-8?q?=E3=80=905.=20=E6=9C=80=E9=95=BF=E5=9B=9E?= =?UTF-8?q?=E6=96=87=E5=AD=90=E4=B8=B2=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提供 Java 代码 --- ...36\346\226\207\345\255\220\344\270\262.md" | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" index 9f0f37f526..d69b65ef16 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" @@ -131,4 +131,40 @@ string longestPalindrome(string s) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[cchromt](https://github.com/cchroot) 提供 Java 代码: + +```java +// 中心扩展算法 +class Solution { + public String longestPalindrome(String s) { + // 如果字符串长度小于2,则直接返回其本身 + if (s.length() < 2) { + return s; + } + String res = ""; + for (int i = 0; i < s.length() - 1; i++) { + // 以 s.charAt(i) 为中心的最长回文子串 + String s1 = palindrome(s, i, i); + // 以 s.charAt(i) 和 s.charAt(i+1) 为中心的最长回文子串 + String s2 = palindrome(s, i, i + 1); + res = res.length() > s1.length() ? res : s1; + res = res.length() > s2.length() ? res : s2; + } + return res; + } + + public String palindrome(String s, int left, int right) { + // 索引未越界的情况下,s.charAt(left) == s.charAt(right) 则继续向两边拓展 + while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { + left--; + right++; + } + // 这里要注意,跳出 while 循环时,恰好满足 s.charAt(i) != s.charAt(j),因此截取的的字符串为[left+1, right-1] + return s.substring(left + 1, right); + } +} +``` + +做完这题,大家可以去看看 [647. 回文子串](https://leetcode-cn.com/problems/palindromic-substrings/) ,也是类似的题目 From 6f708d5b98f7d72411e0b0ec4c555c4f1584eefb Mon Sep 17 00:00:00 2001 From: ZSZ2018211261 <2955324023@qq.com> Date: Wed, 11 Nov 2020 22:35:43 +0800 Subject: [PATCH 32/71] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E3=80=9056.=20?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8C=BA=E9=97=B4=E3=80=91=E3=80=90java?= =?UTF-8?q?=E3=80=91=E9=A2=98=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...72\351\227\264\345\220\210\345\271\266.md" | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" index e4ca2dc2f0..7972184d5b 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" @@ -90,5 +90,66 @@ def merge(intervals):

+======其他语言代码====== + +~~~java +class Solution { + /** + * 1. 先对区间集合进行排序(根据开始位置) + * 2. 合并的情况一共有三种 + * a. b. c. + * |---------| |--------| |--------| + * |---------| |--| |--------| + * a和b两种情况,合并取右边界大的值,c情况不合并 + * + */ + + private int[][] tmp; + + public int[][] merge(int[][] intervals) { + if(intervals == null ||intervals.length == 0)return new int[0][0]; + int length = intervals.length; + //将列表中的区间按照左端点升序排序 + // Arrays.sort(intervals,(v1,v2) -> v1[0]-v2[0]); + + this.tmp = new int[length][2]; + sort(intervals,0,length-1); + + int[][] ans = new int[length][2]; + int index = -1; + for(int[] interval:intervals){ + // 当结果数组是空是,或者当前区间的起始位置 > 结果数组中最后区间的终止位置(即上图情况c); + // 则不合并,直接将当前区间加入结果数组。 + if(index == -1 || interval[0] > ans[index][1]){ + ans[++index] = interval; + }else{ + // 反之将当前区间合并至结果数组的最后区间(即上图情况a,b) + ans[index][1] = Math.max(ans[index][1],interval[1]); + } + } + return Arrays.copyOf(ans, index + 1); + } + + //归并排序 + public void sort(int[][] intervals,int l,int r){ + if(l >= r)return; + + int mid = l + (r-l)/2; + sort(intervals,l,mid); + sort(intervals,mid+1,r); + + //合并 + int i=l,j=mid+1; + for(int k=l;k<=r;k++){ + if(i>mid)tmp[k]=intervals[j++]; + else if(j>r)tmp[k]=intervals[i++]; + else if(intervals[i][0]>intervals[j][0])tmp[k] = intervals[j++]; + else tmp[k] = intervals[i++]; + } + + System.arraycopy(tmp,l,intervals,l,r-l+1); + } + +} +~~~ -======其他语言代码====== \ No newline at end of file From 6860be44b844b4147d68bb5501af87a59d390061 Mon Sep 17 00:00:00 2001 From: "shuhaofeng2@creditease.cn" Date: Wed, 11 Nov 2020 23:21:14 +0800 Subject: [PATCH 33/71] =?UTF-8?q?feat:=20=E4=B8=BA=2043-=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E4=B9=98=E6=B3=95=20=E6=B7=BB=E5=8A=A0python=E8=A7=A3?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: 为 43-字符串乘法 添加python解法1 feat: 为 43-字符串乘法 添加python解法3 --- ...46\344\270\262\344\271\230\346\263\225.md" | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" index 0273744282..8349f7a86e 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" @@ -101,4 +101,33 @@ string multiply(string num1, string num2) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[fengshuu](https://github.com/fengshuu) 提供 Python 解法代码: +```python +def multiply(num1: str, num2: str) -> str: + m, n = len(num1), len(num2) + # 结果最多为 m + n 位数 + res = [0] * (m + n) + # 从个位数开始逐位相乘 + for i in range(m-1, -1, -1): + for j in range(n-1, -1, -1): + mul = int(num1[i]) * int(num2[j]) + # 乘积在 res 对应的索引位置 + p1 = i + j + p2 = i + j + 1 + # 叠加到 res 上 + digit_sum = mul + res[p2] + res[p2] = digit_sum % 10 + res[p1] += digit_sum // 10 + + # 结果前缀可能存的 0(未使用的位) + i = 0 + while i < len(res) and res[i] == 0: + i += 1 + + # 将计算结果转化成字符串 + result_str = "".join(str(x) for x in res[i:]) + + return "0" if len(result_str) == 0 else result_str +``` \ No newline at end of file From edb2084f07cc23a9df50655da1c93dd690930dff Mon Sep 17 00:00:00 2001 From: zak Date: Wed, 11 Nov 2020 23:55:46 +0800 Subject: [PATCH 34/71] =?UTF-8?q?=E3=80=90496.=E4=B8=8B=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=9B=B4=E5=A4=A7=E5=85=83=E7=B4=A0I=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\215\225\350\260\203\346\240\210.md" | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index fca0ca8a25..961e810aab 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -181,4 +181,58 @@ vector nextGreaterElements(vector& nums) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[ZakAnun](https://github.com/ZakAnun) 提供代码 + +```java +// 496.下一个更大元素 +// 暴力解法 +public int[] nextGreaterElement(int[] nums1, int[] nums2) { + int[] result = new int[nums1.length]; + for (int i = 0; i < nums1.length; i++) { + // 需要记录第一个数组每个元素在第二个数组中出现的位置 + int index = 0; + for (int j = 0; j < nums2.length; j++) { + if (nums1[i] == nums2[j]) { + index = j; + break; + } + } + // 根据找到的位置往后遍历,若符合条件则记录到结果数组 + for (int k = index; k < nums2.length; k++) { + if (nums2[k] > nums1[i]) { + result[i] = nums2[k]; + break; + } + } + // 判断若对应位置结果依然为默认值,则将其修改为 -1 + if (result[i] == 0) { + result[i] = -1; + } + } + return result; +} + +// 分析: 暴力解法中需要确定数组1中每个元素在数组2中的下标而需要进行额外的遍历导致时间复杂度升高, +// 但若能够先罗列出全部的结果,然后从结果集中获取数组1中每个元素对应的下一个更大元素,就可以节省这部分时间(这里需要引用 HashMap 帮助我们记录结果,以便根据数组1获取。 +// 单调栈解法 +public int[] nextGreaterElement(int[] nums1, int[] nums2) { + Stack stack = new Stack <>(); + HashMap map = new HashMap <>(); + int[] result = new int[nums1.length]; + for (int value : nums2) { + while (!stack.empty() && value > stack.peek()) { + map.put(stack.pop(), value); + } + stack.push(value); + } + while (!stack.empty()) { + map.put(stack.pop(), -1); + } + for (int i = 0; i < nums1.length; i++) { + result[i] = map.get(nums1[i]); + } + return result; +} +``` \ No newline at end of file From 9519492a8b9b9971a301be53dd006af09ba0689c Mon Sep 17 00:00:00 2001 From: "shuhaofeng2@creditease.cn" Date: Thu, 12 Nov 2020 00:45:38 +0800 Subject: [PATCH 35/71] =?UTF-8?q?feat:=20=E3=80=90969.=20=E7=85=8E?= =?UTF-8?q?=E9=A5=BC=E6=8E=92=E5=BA=8F=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...47\351\245\274\346\216\222\345\272\217.md" | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 513cbdca8c..5b9bf5d35d 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -149,4 +149,47 @@ void reverse(int[] arr, int i, int j) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[fengshuu](https://github.com/fengshuu) 提供 C++ 解法代码: +```cpp +class Solution { +public: + vector pancakeSort(vector& arr) { + sort(arr, arr.size()); + return res; + } + +private: + // 记录反转操作序列 + vector res; + void sort(vector& cakes, int n){ + // base case + if(n == 1) return; + + // 寻找最大饼的索引 + int maxCakeIndex = max_element(cakes.begin(), cakes.begin() + n) - cakes.begin(); + + // 下面进行把最大的饼放到最后的两次翻转 + // 如果最后一个饼就是最大的, 就不需要翻转, 直接进行下次递归 + if (maxCakeIndex == n-1){ + sort(cakes, n - 1); + return; + } + + // 第一次翻转, 将最大饼翻到最上面 + // 如果第一个饼本来就是最大的, 就不需要第一次翻转. + if (maxCakeIndex != 0) { + reverse(cakes.begin(), cakes.begin() + maxCakeIndex + 1); + res.push_back(maxCakeIndex + 1); + } + + // 第二次翻转,将最大饼翻到最下面 + reverse(cakes.begin(), cakes.begin() + n); + res.push_back(n); + + // 递归调用 + sort(cakes, n - 1); + } +}; +``` \ No newline at end of file From aa25e0d36c303bf49a93e27a2401f457edd6a4d8 Mon Sep 17 00:00:00 2001 From: "shuhaofeng2@creditease.cn" Date: Thu, 12 Nov 2020 00:55:23 +0800 Subject: [PATCH 36/71] =?UTF-8?q?feat:=20=E3=80=90969.=20=E7=85=8E?= =?UTF-8?q?=E9=A5=BC=E6=8E=92=E5=BA=8F=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...47\351\245\274\346\216\222\345\272\217.md" | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 5b9bf5d35d..c9e191decf 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -157,39 +157,39 @@ class Solution { public: vector pancakeSort(vector& arr) { sort(arr, arr.size()); - return res; + return res; } - + private: - // 记录反转操作序列 + // 记录反转操作序列 vector res; - void sort(vector& cakes, int n){ - // base case - if(n == 1) return; - - // 寻找最大饼的索引 - int maxCakeIndex = max_element(cakes.begin(), cakes.begin() + n) - cakes.begin(); - - // 下面进行把最大的饼放到最后的两次翻转 - // 如果最后一个饼就是最大的, 就不需要翻转, 直接进行下次递归 - if (maxCakeIndex == n-1){ - sort(cakes, n - 1); - return; - } - - // 第一次翻转, 将最大饼翻到最上面 - // 如果第一个饼本来就是最大的, 就不需要第一次翻转. - if (maxCakeIndex != 0) { - reverse(cakes.begin(), cakes.begin() + maxCakeIndex + 1); - res.push_back(maxCakeIndex + 1); - } - - // 第二次翻转,将最大饼翻到最下面 - reverse(cakes.begin(), cakes.begin() + n); - res.push_back(n); - - // 递归调用 - sort(cakes, n - 1); - } + void sort(vector& cakes, int n){ + // base case + if(n == 1) return; + + // 寻找最大饼的索引 + int maxCakeIndex = max_element(cakes.begin(), cakes.begin() + n) - cakes.begin(); + + // 下面进行把最大的饼放到最后的两次翻转 + // 如果最后一个饼就是最大的, 就不需要翻转, 直接进行下次递归 + if (maxCakeIndex == n-1){ + sort(cakes, n - 1); + return; + } + + // 第一次翻转, 将最大饼翻到最上面 + // 如果第一个饼本来就是最大的, 就不需要第一次翻转. + if (maxCakeIndex != 0) { + reverse(cakes.begin(), cakes.begin() + maxCakeIndex + 1); + res.push_back(maxCakeIndex + 1); + } + + // 第二次翻转,将最大饼翻到最下面 + reverse(cakes.begin(), cakes.begin() + n); + res.push_back(n); + + // 递归调用 + sort(cakes, n - 1); + } }; ``` \ No newline at end of file From dd5749bb3bd66898ca6a06aec00da281e9dfd87f Mon Sep 17 00:00:00 2001 From: "shuhaofeng2@creditease.cn" Date: Thu, 12 Nov 2020 01:23:59 +0800 Subject: [PATCH 37/71] =?UTF-8?q?feat:=20=E3=80=90969.=20=E7=85=8E?= =?UTF-8?q?=E9=A5=BC=E6=8E=92=E5=BA=8F=E3=80=91=E3=80=90Python3=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...47\351\245\274\346\216\222\345\272\217.md" | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 513cbdca8c..67604aea43 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -149,4 +149,41 @@ void reverse(int[] arr, int i, int j) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[fengshuu](https://github.com/fengshuu) 提供 Python3 解法代码: +```python +class Solution: + # 记录反转操作序列 + def __init__(self): + self.res = [] + + def pancakeSort(self, arr: List[int]) -> List[int]: + + self.sort(arr, len(arr)) + return self.res + + def sort(self, cakes: List[int], n: int): + # base case + if 1 == n: + return + + # 寻找最大饼的索引 + max_cake_index = cakes[:n].index(n) + + # 下面进行把最大的饼放到最后的两次翻转 + # 如果最后一个饼就是最大的, 就不需要翻转, 直接进行下次递归 + if max_cake_index != n - 1: + # 第一次翻转, 将最大饼翻到最上面 + # 如果第一个饼本来就是最大的, 就不需要第一次翻转. + if max_cake_index != 0: + cakes[:max_cake_index + 1] = cakes[:max_cake_index + 1][::-1] + self.res.append(max_cake_index + 1) + + # 第二次翻转,将最大饼翻到最下面 + cakes[:n] = cakes[:n][::-1] + self.res.append(n) + + # 递归调用 + self.sort(cakes, n - 1) +``` \ No newline at end of file From 3844dfcaf82003e1491f63796d3e5d253c405650 Mon Sep 17 00:00:00 2001 From: MarineJoker Date: Thu, 12 Nov 2020 01:33:24 +0800 Subject: [PATCH 38/71] binarySearch add python3 version --- ...45\346\211\276\350\257\246\350\247\243.md" | 96 ++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" index 502962f748..7b95fac653 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" @@ -508,4 +508,98 @@ int right_bound(int[] nums, int target) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +[MarineJoker](https://github.com/MarineJoker) 提供 Python3 代码 + +```python +# 基本二分搜索 +def binarySearch(nums, target): + left = 0 + right = len(nums) - 1 + while left <= right: + mid = (left + right) // 2 + if nums[mid] == target: + # 直接返回 + return mid + elif nums[mid] < target: + left = mid + 1 + elif nums[mid] > target: + right = mid - 1 + # 直接返回 + return -1 + + +# 寻找左侧边界的二分搜索,开区间写法 +def left_bound(nums, target): + left, right = 0, len(nums) + if right == 0: + return -1 + while left < right: + mid = (left + right) // 2 + if nums[mid] == target: + # 锁定边界 + right = mid + elif nums[mid] < target: + left = mid + 1 + elif nums[mid] > target: + right = mid + # 检查越界情况 + if left >= len(nums) or nums[left] != target: + return -1 + return left + + +# 寻找右侧侧边界的二分搜索,开区间写法 +def right_bound(nums, target): + left, right = 0, len(nums) + if right == 0: + return -1 + while left < right: + mid = (left + right) // 2 + if nums[mid] == target: + # 锁定边界 + left = mid + 1 + elif nums[mid] < target: + left = mid + 1 + elif nums[mid] > target: + right = mid + # 检查越界情况 + if right < 0 or nums[left - 1] != target: + return -1 + return left - 1 + + +# 左右边界闭区间写法,统一逻辑 +def left_bound(nums, target): + left, right = 0, len(nums) - 1 + while left <= right: + mid = (left + right) // 2 + if nums[mid] == target: + # 锁定边界 + right = mid - 1 + elif nums[mid] < target: + left = mid + 1 + elif nums[mid] > target: + right = mid - 1 + # 检查越界情况 + if left >= len(nums) or nums[left] != target: + return -1 + return left + + +def right_bound(nums, target): + left, right = 0, len(nums) - 1 + while left <= right: + mid = (left + right) // 2 + if nums[mid] == target: + # 锁定边界 + left = mid + 1 + elif nums[mid] < target: + left = mid + 1 + elif nums[mid] > target: + right = mid - 1 + # 检查越界情况 + if right < 0 or nums[right] != target: + return -1 + return right +``` \ No newline at end of file From 3249c6c9c4d10ee6cff7402ce3adfcfba3bc5624 Mon Sep 17 00:00:00 2001 From: MarineJoker Date: Thu, 12 Nov 2020 08:17:52 +0800 Subject: [PATCH 39/71] =?UTF-8?q?Update=20=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE=E8=AF=A6=E8=A7=A3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新一些注释 --- ...45\346\211\276\350\257\246\350\247\243.md" | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" index 7b95fac653..4101b2d68c 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" @@ -537,19 +537,19 @@ def left_bound(nums, target): while left < right: mid = (left + right) // 2 if nums[mid] == target: - # 锁定边界 + # 锁定左侧边界 right = mid elif nums[mid] < target: left = mid + 1 elif nums[mid] > target: right = mid - # 检查越界情况 + # 检查left越界情况 if left >= len(nums) or nums[left] != target: return -1 return left -# 寻找右侧侧边界的二分搜索,开区间写法 +# 寻找右侧边界的二分搜索,开区间写法 def right_bound(nums, target): left, right = 0, len(nums) if right == 0: @@ -557,49 +557,49 @@ def right_bound(nums, target): while left < right: mid = (left + right) // 2 if nums[mid] == target: - # 锁定边界 + # 锁定右侧边界 left = mid + 1 elif nums[mid] < target: left = mid + 1 elif nums[mid] > target: right = mid # 检查越界情况 - if right < 0 or nums[left - 1] != target: + if left == 0 or nums[left - 1] != target: return -1 return left - 1 -# 左右边界闭区间写法,统一逻辑 +# 寻找左侧边界的二分搜索,闭区间写法 def left_bound(nums, target): left, right = 0, len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: - # 锁定边界 + # 锁定左侧边界 right = mid - 1 elif nums[mid] < target: left = mid + 1 elif nums[mid] > target: right = mid - 1 - # 检查越界情况 + # 检查left越界情况 if left >= len(nums) or nums[left] != target: return -1 return left - +# 寻找右侧边界的二分搜索,闭区间写法 def right_bound(nums, target): left, right = 0, len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: - # 锁定边界 + # 锁定右侧边界 left = mid + 1 elif nums[mid] < target: left = mid + 1 elif nums[mid] > target: right = mid - 1 - # 检查越界情况 + # 检查right越界情况 if right < 0 or nums[right] != target: return -1 return right -``` \ No newline at end of file +``` From fa73577ee2522a052b88dd42d619e4a46de2014d Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 19:32:32 -0500 Subject: [PATCH 40/71] =?UTF-8?q?TwoSum=20Python3=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...70\345\277\203\346\200\235\346\203\263.md" | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index 327fc2313c..8e15898102 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -185,4 +185,29 @@ int[] twoSum(int[] nums, int target) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +由[JodyZ203](https://github.com/JodyZ0203)提供 1. Two Sums Python3 解法代码: + +;; 只用一个哈希表 + +'''Python + +class Solution: + def twoSum(self, nums, target): + """ + :type nums: List[int] + :type target: int + :rtype: List[int] + """ + # 提前构造一个哈希表 + hashTable = {} + # 寻找两个目标数值 + for i, n in enumerate(nums): + other_num = target - n + # 如果存在这个余数 other_num + if other_num in hashTable.keys(): + # 查看是否存在哈希表里,如果存在的话就返回数组 + return [i, hashTable[other_num]] + # 如果不存在的话继续处理剩余的数 + hashTable[n] = i From 0d82ea06398006d72e37a2c2f64d039debf3b2fb Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:12:06 -0500 Subject: [PATCH 41/71] =?UTF-8?q?Update=20twoSum=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E6=A0=B8=E5=BF=83=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index 8e15898102..9dcf5b09d6 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -211,3 +211,6 @@ class Solution: return [i, hashTable[other_num]] # 如果不存在的话继续处理剩余的数 hashTable[n] = i + + +''' From f6d6db49b536c702414c3e11de0f6a29e52dc7d5 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:13:30 -0500 Subject: [PATCH 42/71] =?UTF-8?q?Update=20=E5=B8=B8=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E6=93=8D=E4=BD=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 位1的个数python3 --- ...04\344\275\215\346\223\215\344\275\234.md" | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" index f5b5771985..3601053682 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" @@ -172,4 +172,27 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +由[JodyZ203](https://github.com/JodyZ0203)提供 191. 位1的个数 Python3 解法代码: + +'''Python + +class Solution: + def hammingWeight(self, n: int) -> int: + + # 先定义一个count,用来存1的出现数量 + count = 0 + + # 只要二进制串不等于0之前,我们用一个循环边消除1和计1的出现数量 + while n!=0: + + # 用labuladong在文章中所提到的 n&(n-1) 技巧来消除最后一个1 + n = n & (n-1) + + count+=1 + + # 当二进制串全消除完之后,返回1出现的总数量 + return count + +''' From 31488adb9628132308d4913f965a74d1be6f49c7 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:17:37 -0500 Subject: [PATCH 43/71] =?UTF-8?q?Update=20=E5=B8=B8=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E6=93=8D=E4=BD=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" index 3601053682..f056558866 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" @@ -174,7 +174,7 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel ======其他语言代码====== -由[JodyZ203](https://github.com/JodyZ0203)提供 191. 位1的个数 Python3 解法代码: +由[JodyZ0203](https://github.com/JodyZ0203)提供 191. 位1的个数 Python3 解法代码: '''Python From 6ef4cbbfdb0c6b604454da5e4b937d0e618e0aee Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:17:55 -0500 Subject: [PATCH 44/71] =?UTF-8?q?Update=20twoSum=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E6=A0=B8=E5=BF=83=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index 9dcf5b09d6..1c719320d7 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -187,7 +187,7 @@ int[] twoSum(int[] nums, int target) { ======其他语言代码====== -由[JodyZ203](https://github.com/JodyZ0203)提供 1. Two Sums Python3 解法代码: +由[JodyZ0203](https://github.com/JodyZ0203)提供 1. Two Sums Python3 解法代码: ;; 只用一个哈希表 From fee8d2e25ef34cf9fc5ff055e788518336d01574 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 22:44:56 -0500 Subject: [PATCH 45/71] =?UTF-8?q?Update=20=E4=B8=80=E8=A1=8C=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=A7=A3=E5=86=B3=E7=9A=84=E6=99=BA=E5=8A=9B=E9=A2=98?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04\346\231\272\345\212\233\351\242\230.md" | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" index 1d177823c1..67ec0d715e 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" @@ -149,4 +149,53 @@ int bulbSwitch(int n) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +由[JodyZ0203](https://github.com/JodyZ0203)提供 292. Nim 游戏 Python3 解法代码: +```Python3 +class Solution: + def canWinNim(self, n: int) -> bool: + # 如果除于是0,说明是4的倍数,所以必输 + # 否则不是除于不等于0,说明不是4的倍数,说明必胜 + return n % 4 != 0 +``` + +由[JodyZ0203](https://github.com/JodyZ0203)提供 877. 石子游戏 Python3 解法代码: +```Python3 +class Solution: + def stoneGame(self, piles: List[int]) -> bool: + # 双方都很聪明的前提下, 先手必胜无疑 + # 先手可以提前观察偶数堆还是基数的石头总数更多 + return True +``` + +由[JodyZ0203](https://github.com/JodyZ0203)提供 877. 石子游戏 C++ 解法代码: +```cpp +class Solution { +public: + bool stoneGame(vector& piles) { + // 双方都很聪明的前提下, 先手必胜无疑 + return true; + } +}; +``` + + +由[JodyZ0203](https://github.com/JodyZ0203)提供 319. 灯泡开关 Python3 解法代码: +```Python3 +class Solution: + def bulbSwitch(self, n: int) -> int: + # 平方根电灯个数之后向下取整即可 + return floor(sqrt (n)) +``` + +由[JodyZ0203](https://github.com/JodyZ0203)提供 319. 灯泡开关 C++ 解法代码: +```cpp +class Solution { +public: + int bulbSwitch(int n) { + // 平方根电灯个数之后向下取整即可 + return floor(sqrt (n)); + } +}; +``` From c8539a630c62aacb7aeee7cbbbde5c00d4fe5502 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 22:52:44 -0500 Subject: [PATCH 46/71] =?UTF-8?q?Update=20twoSum=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E6=A0=B8=E5=BF=83=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...204\346\240\270\345\277\203\346\200\235\346\203\263.md" | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index 1c719320d7..fef163c5f1 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -191,8 +191,7 @@ int[] twoSum(int[] nums, int target) { ;; 只用一个哈希表 -'''Python - +```Python3 class Solution: def twoSum(self, nums, target): """ @@ -211,6 +210,4 @@ class Solution: return [i, hashTable[other_num]] # 如果不存在的话继续处理剩余的数 hashTable[n] = i - - -''' +``` From f0332aa4f4125d0d62db52535c3de863c2462dd8 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Wed, 11 Nov 2020 22:53:37 -0500 Subject: [PATCH 47/71] =?UTF-8?q?Update=20=E5=B8=B8=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E6=93=8D=E4=BD=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\250\347\232\204\344\275\215\346\223\215\344\275\234.md" | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" index f056558866..ebcde785d8 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" @@ -176,8 +176,7 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel 由[JodyZ0203](https://github.com/JodyZ0203)提供 191. 位1的个数 Python3 解法代码: -'''Python - +```Python3 class Solution: def hammingWeight(self, n: int) -> int: @@ -194,5 +193,4 @@ class Solution: # 当二进制串全消除完之后,返回1出现的总数量 return count - -''' + ``` From d5b5f57380cf6a3f047a29253e811a10e5dcb498 Mon Sep 17 00:00:00 2001 From: LEO D PEN Date: Thu, 12 Nov 2020 12:00:29 +0800 Subject: [PATCH 48/71] =?UTF-8?q?Update=20UnionFind=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E5=BA=94=E7=94=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" index c1af151ef8..c3ce82fc2c 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" @@ -317,7 +317,7 @@ class Solution { public boolean validTree(int n, int[][] edges) { // 树的特性:节点数 = 边数 + 1 if (edges.length != n - 1) return false; - graph_261.Solution.DisjointSet djs = new graph_261.Solution.DisjointSet(n); + DisjointSet djs = new DisjointSet(n); for (int[] edg : edges) { // 判断连通情况(如果合并的两个点在一个连通分量里,说明有环) if (!djs.union(edg[0], edg[1])) return false; From b606f9f3b907a24528051fa5b5e9252f7136fd96 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Thu, 12 Nov 2020 01:47:04 -0500 Subject: [PATCH 49/71] =?UTF-8?q?Update=20twoSum=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E6=A0=B8=E5=BF=83=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index fef163c5f1..3ee490959d 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -191,7 +191,7 @@ int[] twoSum(int[] nums, int target) { ;; 只用一个哈希表 -```Python3 +```Python class Solution: def twoSum(self, nums, target): """ From 696741235cabd9d6bfc4a919f933c254c5817525 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Thu, 12 Nov 2020 01:47:31 -0500 Subject: [PATCH 50/71] =?UTF-8?q?Update=20=E5=B8=B8=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E6=93=8D=E4=BD=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" index ebcde785d8..98f3e4bf28 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" @@ -176,7 +176,7 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel 由[JodyZ0203](https://github.com/JodyZ0203)提供 191. 位1的个数 Python3 解法代码: -```Python3 +```Python class Solution: def hammingWeight(self, n: int) -> int: From c60cb17ef8a9e60664a48ec1145f1f71cda942e4 Mon Sep 17 00:00:00 2001 From: Jody Zhou <56443135+JodyZ0203@users.noreply.github.com> Date: Thu, 12 Nov 2020 01:48:10 -0500 Subject: [PATCH 51/71] =?UTF-8?q?Update=20=E4=B8=80=E8=A1=8C=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=A7=A3=E5=86=B3=E7=9A=84=E6=99=BA=E5=8A=9B=E9=A2=98?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...47\232\204\346\231\272\345\212\233\351\242\230.md" | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" index 67ec0d715e..0afa085582 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" @@ -152,7 +152,8 @@ int bulbSwitch(int n) { ======其他语言代码====== 由[JodyZ0203](https://github.com/JodyZ0203)提供 292. Nim 游戏 Python3 解法代码: -```Python3 + +```Python class Solution: def canWinNim(self, n: int) -> bool: # 如果除于是0,说明是4的倍数,所以必输 @@ -161,7 +162,8 @@ class Solution: ``` 由[JodyZ0203](https://github.com/JodyZ0203)提供 877. 石子游戏 Python3 解法代码: -```Python3 + +```Python class Solution: def stoneGame(self, piles: List[int]) -> bool: # 双方都很聪明的前提下, 先手必胜无疑 @@ -170,6 +172,7 @@ class Solution: ``` 由[JodyZ0203](https://github.com/JodyZ0203)提供 877. 石子游戏 C++ 解法代码: + ```cpp class Solution { public: @@ -182,7 +185,8 @@ public: 由[JodyZ0203](https://github.com/JodyZ0203)提供 319. 灯泡开关 Python3 解法代码: -```Python3 + +```Python class Solution: def bulbSwitch(self, n: int) -> int: # 平方根电灯个数之后向下取整即可 @@ -190,6 +194,7 @@ class Solution: ``` 由[JodyZ0203](https://github.com/JodyZ0203)提供 319. 灯泡开关 C++ 解法代码: + ```cpp class Solution { public: From 02e9973a48fdf0be4cea260719c401a9a3023839 Mon Sep 17 00:00:00 2001 From: Kian Kwok Date: Thu, 12 Nov 2020 15:58:28 +0800 Subject: [PATCH 52/71] =?UTF-8?q?=E3=80=9056.=E5=90=88=E5=B9=B6=E5=8C=BA?= =?UTF-8?q?=E9=97=B4=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...72\351\227\264\345\220\210\345\271\266.md" | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" index e4ca2dc2f0..6f16ad5109 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" @@ -91,4 +91,38 @@ def merge(intervals):

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Kian](https://github.com/KianKw/) 提供第 56 题 C++ 代码 + +```c++ +class Solution { +public: + vector> merge(vector>& intervals) { + // len 为 intervals 的长度 + int len = intervals.size(); + if (len < 1) + return {}; + + // 按区间的 start 升序排列 + sort(intervals.begin(), intervals.end()); + + // 初始化 res 数组 + vector> res; + res.push_back(intervals[0]); + + for (int i = 1; i < len; i++) { + vector curr = intervals[i]; + // res.back() 为 res 中最后一个元素的索引 + if (curr[0] <= res.back()[1]) { + // 找到最大的 end + res.back()[1] = max(res.back()[1], curr[1]); + } else { + // 处理下一个待合并区间 + res.push_back(curr); + } + } + return res; + } +}; +``` From 0edbc96cf090922407b6a2dae30a8663fff1dc38 Mon Sep 17 00:00:00 2001 From: Harrold Zhou Date: Thu, 12 Nov 2020 16:23:31 +0800 Subject: [PATCH 53/71] =?UTF-8?q?=E3=80=90986.=E5=8C=BA=E9=97=B4=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E4=BA=A4=E9=9B=86=E3=80=91=E3=80=90Java?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...44\351\233\206\351\227\256\351\242\230.md" | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" index b2ca23838f..dcf4888cf4 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" @@ -133,4 +133,27 @@ def intervalIntersection(A, B):

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== +[KiraZh](https://github.com/KiraZh)提供第986题Java代码 +```java +class Solution { + public int[][] intervalIntersection(int[][] A, int[][] B) { + List res = new ArrayList<>(); + int a = 0, b = 0; + while(a < A.length && b < B.length) { + // 确定左边界,两个区间左边界的最大值 + int left = Math.max(A[a][0], B[b][0]); + // 确定右边界,两个区间右边界的最小值 + int right = Math.min(A[a][1], B[b][1]); + // 左边界小于右边界则加入结果集 + if (left <= right) + res.add(new int[] {left, right}); + // 右边界更大的保持不动,另一个指针移动,继续比较 + if(A[a][1] < B[b][1]) a++; + else b++; + } + // 将结果转为数组 + return res.toArray(new int[0][]); + } +} +``` \ No newline at end of file From 3360ffda0fd458460a9c4908a0d7c0c58f539373 Mon Sep 17 00:00:00 2001 From: dragon_li <49151509+1097452462@users.noreply.github.com> Date: Thu, 12 Nov 2020 20:13:10 +0800 Subject: [PATCH 54/71] =?UTF-8?q?Update=20=E7=BC=BA=E5=A4=B1=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\215\345\244\215\347\232\204\345\205\203\347\264\240.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" index 52c8d7859f..9e0b5507e8 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" @@ -1,4 +1,4 @@ -# 如何寻找缺失和重复的元素 +# 如何寻找缺失和重复的元素

@@ -165,4 +165,4 @@ class Solution { return new int[]{dup, missing}; } } -``` \ No newline at end of file +``` From 1b2ec335ea4b1ae65ba4cb1e92ff2b9e318b1084 Mon Sep 17 00:00:00 2001 From: dragon_li <49151509+1097452462@users.noreply.github.com> Date: Thu, 12 Nov 2020 20:15:23 +0800 Subject: [PATCH 55/71] =?UTF-8?q?Update=20=E7=BC=BA=E5=A4=B1=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\215\345\244\215\347\232\204\345\205\203\347\264\240.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" index 9e0b5507e8..eb21f4c8cb 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" @@ -148,7 +148,7 @@ class Solution { int n = nums.length; int dup = -1; for (int i = 0; i < n; i++) { - // 元素是从 1 开始的 + // 元素是从 1 开始的 int index = Math.abs(nums[i]) - 1; // nums[index] 小于 0 则说明重复访问 if (nums[index] < 0) @@ -160,7 +160,7 @@ class Solution { for (int i = 0; i < n; i++) // nums[i] 大于 0 则说明没有访问 if (nums[i] > 0) - // 将索引转换成元素 + // 将索引转换成元素 missing = i + 1; return new int[]{dup, missing}; } From 72a6b4ee41392c3d455f07c8e8805a2f55c11feb Mon Sep 17 00:00:00 2001 From: DearDeer7 <1479588900@qq.com> Date: Fri, 13 Nov 2020 00:00:28 +0800 Subject: [PATCH 56/71] =?UTF-8?q?=E3=80=90141.=20Linked=20List=20Cycle?= =?UTF-8?q?=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...07\351\222\210\346\212\200\345\267\247.md" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" index f5edbd4268..a939ea0c7f 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" @@ -232,6 +232,28 @@ void reverse(int[] nums) { ======其他语言代码====== +[deardeer7](https://github.com/DearDeer7/) 提供 C++ 代码 +```cpp +class Solution { +public: + bool hasCycle(ListNode *head) { + // 链表为空或有一个元素,则无环 + if(!head || !head->next) return false; + + ListNode* slow = head; + ListNode* fast = head->next; + + while(fast && fast->next) { + fast = fast->next->next; + slow = slow->next; + // 快慢指针相遇,则有环 + if(fast == slow) return true; + } + return false; // 链表走完,快慢指针未相遇,则无环 + } +}; +``` + [ryandeng32](https://github.com/ryandeng32/) 提供 Python 代码 ```python class Solution: From 377413da64de117506de08c465ea7b863c2c3476 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 13 Nov 2020 10:53:13 +0800 Subject: [PATCH 57/71] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=AC=AC100?= =?UTF-8?q?=E9=A2=98=E7=9A=84C++=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\344\275\234\351\233\206\351\224\246.md" | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index b30ceebb9b..158b1c9c9f 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -309,9 +309,9 @@ void BST(TreeNode root, int target) {

- ======其他语言代码====== [dekunma](https://www.linkedin.com/in/dekun-ma-036a9b198/)提供第98题C++代码: + ```C++ /** * Definition for a binary tree node. @@ -343,3 +343,40 @@ public: } }; ``` + +[yanggg1997](https://github.com/yanggg1997)提供第100题C++代码: + +``` c++ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + bool isSameTree(TreeNode* p, TreeNode* q) { + // 若当前节点均为空,则此处相同 + if(!p && !q) return true; + // 若当前节点在一棵树上有而另一棵树上为空,则两棵树不同 + if(!p && q) return false; + if(p && !q) return false; + // 若当前节点在两棵树上均存在。 + if(p->val != q->val) + { + return false; + } + else + { + // 向左右子树分别递归判断 + return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); + } + } +}; +``` + From 12fbf2910a9a99b5adcbe95f54787295e57d0bb3 Mon Sep 17 00:00:00 2001 From: ruiboliu Date: Tue, 10 Nov 2020 23:06:18 -0500 Subject: [PATCH 58/71] =?UTF-8?q?509=20=E6=96=90=E6=B3=A2=E9=82=A3?= =?UTF-8?q?=E5=A5=91=E6=95=B0=E5=88=97=20Python=203=20=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\350\247\243\350\277\233\351\230\266.md" | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" index bff29f4314..8ec424bf55 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" @@ -366,4 +366,45 @@ PS:为啥 `dp` 数组初始化为 `amount + 1` 呢,因为凑成 `amount` 金

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[DapangLiu](https://github.com/DapangLiu) 提供 509. 斐波那契数 Python3 解法代码: + +递归写法 + +```python +class Solution: + def fib(self, N: int) -> int: + if N <= 1: + return N + return self.fib(N-1) + self.fib(N-2) +``` + +动态规划写法 + +```python +class Solution: + def fib(self, N: int) -> int: + if N == 0: + return 0 + # init + result = [0 for i in range(N+1)] + result[1] = 1 + + # status transition + for j in range(2, N+1): + result[j] = result[j-1] + result[j-2] + return result[-1] +``` + +动态规划写法 (状态压缩) + +```python +class Solution: + def fib(self, n: int) -> int: + # current status only depends on two previous status + dp_0, dp_1 = 0, 1 + for _ in range(n): + dp_0, dp_1 = dp_1, dp_0 + dp_1 + return dp_0 +``` \ No newline at end of file From 0ad9a50f645ff6328ea89fdd668bd1f8263dca2b Mon Sep 17 00:00:00 2001 From: Edwenc <45341488+Edwenc@users.noreply.github.com> Date: Tue, 17 Nov 2020 17:35:19 +0800 Subject: [PATCH 59/71] =?UTF-8?q?=E3=80=901143.=E6=9C=80=E9=95=BF=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E5=AD=90=E5=BA=8F=E5=88=97=E3=80=91=E3=80=90C++=20?= =?UTF-8?q?=E3=80=91=20(#500)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add 1143 C++ version * add comment Co-authored-by: Ed Co-authored-by: labuladong --- ...61\345\255\220\345\272\217\345\210\227.md" | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" index 39b13dd6de..bff1721aa8 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" @@ -1,4 +1,4 @@ -# 最长公共子序列 +# 最长公共子序列

@@ -149,6 +149,40 @@ else: ======其他语言代码====== + +[Edwenc](https://github.com/Edwenc) 提供 C++ 代码: + +```C++ +class Solution { +public: + int longestCommonSubsequence(string text1, string text2) { + // 先计算两条字符串的长度 + int m = text1.size(); + int n = text2.size(); + + // 构建dp矩阵 默认初始值0 + // 这里会多扩建一边和一列 + // 因为dp[i][j]的含义是:对于 s1[1..i] 和 s2[1..j],它们的LCS长度是 dp[i][j]。 + // 所以当i或者j为零时 LCS的长度默认为0 + vector< vector > dp ( m+1 , vector ( n+1 , 0 ) ); + + // 状态转移 + // i、j都从1开始遍历 因为下面的操作中都会-1 相当于从0开始 + for ( int i=1 ; i Date: Tue, 10 Nov 2020 23:35:50 -0500 Subject: [PATCH 60/71] =?UTF-8?q?=E3=80=9042.=20=E6=8E=A5=E9=9B=A8?= =?UTF-8?q?=E6=B0=B4=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\346\216\245\351\233\250\346\260\264.md" | 97 ++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" index e1fd62583f..a500aac0f7 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" @@ -211,4 +211,99 @@ if (l_max < r_max) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[Yifan Zhang](https://github.com/FanFan0919) 提供 java 代码 + +**双指针解法**:时间复杂度 O(N),空间复杂度 O(1) + +对cpp版本的解法有非常微小的优化。 +因为我们每次循环只会选 left 或者 right 处的柱子来计算,因此我们并不需要在每次循环中同时更新`maxLeft`和`maxRight`。 +我们可以先比较 `maxLeft` 和 `maxRight`,决定这次选择计算的柱子是 `height[left]` 或者 `height[right]` 后再更新对应的 `maxLeft` 或 `maxRight`。 +当然这并不会在时间上带来什么优化,只是提供一种思路。 + +```java +class Solution { + public int trap(int[] height) { + if (height == null || height.length == 0) return 0; + int left = 0, right = height.length - 1; + int maxLeft = height[left], maxRight = height[right]; + int res = 0; + + while (left < right) { + // 比较 maxLeft 和 maxRight,决定这次计算 left 还是 right 处的柱子 + if (maxLeft < maxRight) { + left++; + maxLeft = Math.max(maxLeft, height[left]); // update maxLeft + res += maxLeft - height[left]; + } else { + right--; + maxRight = Math.max(maxRight, height[right]); // update maxRight + res += maxRight - height[right]; + } + } + + return res; + } +} +``` + +附上暴力解法以及备忘录解法的 java 代码 + +**暴力解法**:时间复杂度 O(N^2),空间复杂度 O(1) +```java +class Solution { + public int trap(int[] height) { + if (height == null || height.length == 0) return 0; + int n = height.length; + int res = 0; + // 跳过最左边和最右边的柱子,从第二个柱子开始 + for (int i = 1; i < n - 1; i++) { + int maxLeft = 0, maxRight = 0; + // 找右边最高的柱子 + for (int j = i; j < n; j++) { + maxRight = Math.max(maxRight, height[j]); + } + // 找左边最高的柱子 + for (int j = i; j >= 0; j--) { + maxLeft = Math.max(maxLeft, height[j]); + } + // 如果自己就是最高的话, + // maxLeft == maxRight == height[i] + res += Math.min(maxLeft, maxRight) - height[i]; + } + return res; + } +} +``` + +**备忘录解法**:时间复杂度 O(N),空间复杂度 O(N) +```java +class Solution { + public int trap(int[] height) { + if (height == null || height.length == 0) return 0; + int n = height.length; + int res = 0; + // 数组充当备忘录 + int[] maxLeft = new int[n]; + int[] maxRight = new int[n]; + // 初始化 base case + maxLeft[0] = height[0]; + maxRight[n - 1] = height[n - 1]; + + // 从左向右计算 maxLeft + for (int i = 1; i < n; i++) { + maxLeft[i] = Math.max(maxLeft[i - 1], height[i]); + } + // 从右向左计算 maxRight + for (int i = n - 2; i >= 0; i--) { + maxRight[i] = Math.max(maxRight[i + 1], height[i]); + } + // 计算答案 + for (int i = 1; i < n; i++) { + res += Math.min(maxLeft[i], maxRight[i]) - height[i]; + } + return res; + } +} +``` \ No newline at end of file From 424f210d1560b0e16c46b83d34db65cc5cfa3120 Mon Sep 17 00:00:00 2001 From: Skylar Liang <31715464+SkylarLJY@users.noreply.github.com> Date: Tue, 17 Nov 2020 17:37:35 +0800 Subject: [PATCH 61/71] 20 Valid Parentheses python3 (#502) Co-authored-by: labuladong --- ...54\345\217\267\345\210\244\345\256\232.md" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" index 3bded5a322..6516aa1b53 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" @@ -114,6 +114,28 @@ char leftOf(char c) { ======其他语言代码====== +### Python3 +```python +def isValid(self, s: str) -> bool: + left = [] + leftOf = { + ')':'(', + ']':'[', + '}':'{' + } + for c in s: + if c in '([{': + left.append(c) + elif left and leftOf[c]==left[-1]: # 右括号 + left不为空 + 和最近左括号能匹配 + left.pop() + else: # 右括号 + (left为空 / 和堆顶括号不匹配) + return False + + # left中所有左括号都被匹配则return True 反之False + return not left +``` + + ```java //基本思想:每次遇到左括号时都将相对应的右括号')',']'或'}'推入堆栈 //如果在字符串中出现右括号,则需要检查堆栈是否为空,以及顶部元素是否与该右括号相同。如果不是,则该字符串无效。 @@ -137,3 +159,4 @@ public boolean isValid(String s) { ``` + From 7b6cab8386033457eaabc41a35e160ef0035fdf7 Mon Sep 17 00:00:00 2001 From: SherlockGuo <38394051+SherlockGuo@users.noreply.github.com> Date: Tue, 17 Nov 2020 17:49:13 +0800 Subject: [PATCH 62/71] =?UTF-8?q?=E3=80=90300.=E6=9C=80=E9=95=BF=E4=B8=8A?= =?UTF-8?q?=E5=8D=87=E5=AD=90=E5=BA=8F=E5=88=97=E3=80=91=E3=80=90Python?= =?UTF-8?q?=E3=80=91=20(#507)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add python * add python * add python Co-authored-by: LockyGuo Co-authored-by: labuladong --- ...36\345\255\220\345\272\217\345\210\227.md" | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" index a2a04608ec..edef47328c 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" @@ -217,6 +217,51 @@ public int lengthOfLIS(int[] nums) { ======其他语言代码====== +```python 动态规划 +class Solution: + def lengthOfLIS(self, nums: List[int]) -> int: + n = len(nums) + f = [1] * (n) + + for i in range(n): + for j in range(i): + if nums[j] < nums[i]: + f[i] = max(f[i], f[j] + 1) + + res = 0 + for i in range(n): + res = max(res, f[i]) + return res +``` + +```python 二分查找 +class Solution: + def lengthOfLIS(self, nums: List[int]) -> int: + stack = [] + + def find_index(num): + l, r = 0, len(stack) + while l < r: + mid = l + r >> 1 + if stack[mid] >= num: + r = mid + else: + l = mid + 1 + + return r + + + for num in nums: + if not stack or num > stack[-1]: + stack.append(num) + else: + position = find_index(num) + stack[position] = num + + return len(stack) +``` + + [Kian](https://github.com/KianKw/) 提供 C++ 代码 ```c++ @@ -257,3 +302,4 @@ public: } }; ``` + From 85301014bb879a33327dfa6643466c0184dd14c7 Mon Sep 17 00:00:00 2001 From: TCeason <33082201+TCeason@users.noreply.github.com> Date: Tue, 17 Nov 2020 17:56:31 +0800 Subject: [PATCH 63/71] add a cpp hash map version for stoneGame (#599) --- ...32\345\274\210\351\227\256\351\242\230.md" | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" index 44246ab009..f9082d8def 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" @@ -221,7 +221,7 @@ int stoneGame(int[] piles) { -python3版本 +* python3版本 由[SCUHZS](https://github.com/brucecat)提供 @@ -287,3 +287,44 @@ class Solution: ``` +* C++ 版本 + +由 [TCeason](https://github.com/TCeason) 提供 + +这里采用 hash map 来解决问题 + +```cpp +class Solution { +public: + unordered_map memo; + + int dfs(vector &piles, int index) { + // 从两边向中间获取 + // index 值为 1/2 piles.size() 时可以停止算法 + if (index == piles.size() / 2) + return 0; + + // 减少计算,快速返回已有结果 + if (memo.count(index)) + return memo[index]; + + // 防止第一次取最右时越界 + int n = piles.size() - 1; + + // 先手选择最左边或最右边后的分数 + int l = piles[index] + dfs(piles, index + 1); + int r = piles[n - index] + dfs(piles, index + 1); + + // 返回先手左或右边的最高分 + return memo[index] = max(l, r); + } + + bool stoneGame(vector& piles) { + // 最佳发挥时: + // 先手得分 * 2 > 总大小 则先手者胜利 + return dfs(piles, 0) * 2 > accumulate(begin(piles), end(piles), 0); + } +}; + +``` + From 560ea5d9b9ac6fa3b5d8f82697871464c8784fb0 Mon Sep 17 00:00:00 2001 From: labuladong Date: Tue, 17 Nov 2020 19:14:05 +0800 Subject: [PATCH 64/71] =?UTF-8?q?=E6=90=9C=E4=B8=80=E6=90=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c969002390..45995ef16d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ English version repo and Gitbook is on [english branch](https://github.com/labul

+![](pictures/souyisou.png) +

From 0b2efdc76576cce2b03971eceed00cba79765d48 Mon Sep 17 00:00:00 2001 From: labuladong Date: Wed, 18 Nov 2020 11:19:47 +0800 Subject: [PATCH 65/71] fixbug --- ...222\350\257\246\350\247\243\350\277\233\351\230\266.md" | 4 +++- .../\345\215\225\350\260\203\346\240\210.md" | 6 +++--- ...206\346\237\245\346\211\276\350\257\246\350\247\243.md" | 4 ++-- ...214\346\214\207\351\222\210\346\212\200\345\267\247.md" | 7 ++++++- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" index 8ec424bf55..f51608e184 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" @@ -146,6 +146,8 @@ int helper(vector& memo, int n) { ```cpp int fib(int N) { + if (N == 0) return 0; + if (N == 1) return 1; vector dp(N + 1, 0); // base case dp[1] = dp[2] = 1; @@ -200,7 +202,7 @@ int coinChange(int[] coins, int amount); 比如说 `k = 3`,面值分别为 1,2,5,总金额 `amount = 11`。那么最少需要 3 枚硬币凑出,即 11 = 5 + 5 + 1。 -你认为计算机应该如何解决这个问题?显然,就是把所有肯能的凑硬币方法都穷举出来,然后找找看最少需要多少枚硬币。 +你认为计算机应该如何解决这个问题?显然,就是把所有可能的凑硬币方法都穷举出来,然后找找看最少需要多少枚硬币。 **1、暴力递归** diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index fca0ca8a25..5cbdc4e61f 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -11,7 +11,7 @@ ![](../pictures/souyisou.png) 相关推荐: - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) +* [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -20,7 +20,7 @@ [503.下一个更大元素II](https://leetcode-cn.com/problems/next-greater-element-ii) -[1118.一月有多少天](https://leetcode-cn.com/problems/number-of-days-in-a-month) +[739.每日温度](https://leetcode-cn.com/problems/daily-temperatures/) **-----------** @@ -82,7 +82,7 @@ vector nextGreaterElement(vector& nums) { ### 问题变形 -单调栈的使用技巧差不多了,来一个简单的变形,力扣第 1118 题「一月有多少天」: +单调栈的使用技巧差不多了,来一个简单的变形,力扣第 739 题「每日温度」: 给你一个数组 `T`,这个数组存放的是近几天的天气气温,你返回一个等长的数组,计算:**对于每一天,你还要至少等多少天才能等到一个更暖和的气温;如果等不到那一天,填 0**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" index 502962f748..a413541bfb 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" @@ -65,7 +65,7 @@ int binarySearch(int[] nums, int target) { ### 一、寻找一个数(基本的二分搜索) -这个场景是最简单的,肯能也是大家最熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1。 +这个场景是最简单的,可能也是大家最熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1。 ```java int binarySearch(int[] nums, int target) { @@ -104,7 +104,7 @@ int binarySearch(int[] nums, int target) { `while(left <= right)` 的终止条件是 `left == right + 1`,写成区间的形式就是 `[right + 1, right]`,或者带个具体的数字进去 `[3, 2]`,可见**这时候区间为空**,因为没有数字既大于等于 3 又小于等于 2 的吧。所以这时候 while 循环终止是正确的,直接返回 -1 即可。 -`while(left < right)` 的终止条件是 `left == right`,写成区间的形式就是 `[left, right]`,或者带个具体的数字进去 `[2, 2]`,**这时候区间非空**,还有一个数 2,但此时 while 循环终止了。也就是说这区间 `[2, 2]` 被漏掉了,索引 2 没有被搜索,如果这时候直接返回 -1 就是错误的。 +`while(left < right)` 的终止条件是 `left == right`,写成区间的形式就是 `[right, right]`,或者带个具体的数字进去 `[2, 2]`,**这时候区间非空**,还有一个数 2,但此时 while 循环终止了。也就是说这区间 `[2, 2]` 被漏掉了,索引 2 没有被搜索,如果这时候直接返回 -1 就是错误的。 当然,如果你非要用 `while(left < right)` 也可以,我们已经知道了出错的原因,就打个补丁好了: diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" index f5edbd4268..ff2aebea57 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" @@ -20,7 +20,7 @@ [141.环形链表II](https://leetcode-cn.com/problems/linked-list-cycle-ii) -[167.两数之和 II - 输入有序数组](https://leetcode-cn.com/problems/two-sum) +[167.两数之和 II - 输入有序数组](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted) **-----------** @@ -80,6 +80,11 @@ ListNode detectCycle(ListNode head) { if (fast == slow) break; } // 上面的代码类似 hasCycle 函数 + if (fast == null || fast.next == null) { + // fast 遇到空指针说明没有环 + return null; + } + slow = head; while (slow != fast) { fast = fast.next; From fb6ada33111aefc22de515579f3e680f5614b8fe Mon Sep 17 00:00:00 2001 From: labuladong Date: Thu, 3 Dec 2020 10:43:18 +0800 Subject: [PATCH 66/71] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=87=BA=E7=89=88?= =?UTF-8?q?=E6=8E=A8=E5=B9=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++++----- ...347\211\210\346\216\250\345\271\2771.jpeg" | Bin 0 -> 122844 bytes 2 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 "\345\207\272\347\211\210\346\216\250\345\271\2771.jpeg" diff --git a/README.md b/README.md index 45995ef16d..0858fff4b9 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ English version repo and Gitbook is on [english branch](https://github.com/labul ![](pictures/souyisou.png) +好消息,《labuladong 的算法小抄》纸质书出版啦!关注公众号查看详情👆 +

@@ -27,27 +29,36 @@ English version repo and Gitbook is on [english branch](https://github.com/labul 只想要答案的话很容易,题目评论区五花八门的答案,动不动就秀 python 一行代码解决,有那么多人点赞。问题是,你去做算法题,是去学习编程语言的奇技淫巧的,还是学习算法思维的呢?你的快乐,到底源自复制别人的一行代码通过测试,已完成题目 +1,还是源自自己通过逻辑推理和算法框架不看答案写出解法? -网上总有大佬喷我,说我写这玩意太基础了,根本没必要啰嗦。我只能说大家刷算法就是找工作吃饭的,不是打竞赛的,我也是一路摸爬滚打过来的,我们要的是清楚明白有所得,不是故弄玄虚无所指。不想办法做到通俗易懂,难道要上来先把《算法导论》吹上天,然后把人家都心怀敬仰地劝退? +网上总有大佬喷我,说我写的东西太基础,要么说不能借助框架思维来学习算法。我只能说大家刷算法就是找工作吃饭的,不是打竞赛的,我也是一路摸爬滚打过来的,我们要的是清楚明白有所得,不是故弄玄虚无所指。 + +不想办法做到通俗易懂,难道要上来先把《算法导论》吹上天,然后把人家都心怀敬仰地劝退? **做啥事情做多了,都能发现套路的,我把各种算法套路框架总结出来,相信可以帮助其他人少走弯路**。我这个纯靠自学的小童鞋,花了一年时间刷题和总结,自己写了一份算法小抄,后面有目录,这里就不废话了。 ### 使用方法 -1、**先给本仓库点个 star,满足一下我的虚荣心**,文章质量绝对值你一个 star。我还在继续创作,给我一点继续写文的动力,感谢。 +**1、先给本仓库点个 star,满足一下我的虚荣心**,文章质量绝对值你一个 star。我还在继续创作,给我一点继续写文的动力,感谢。 + +**2、建议收藏我的在线网站,每篇文章开头都有对应的力扣题目链接,可以边看文章边刷题**: + +Gitbook 地址:https://labuladong.gitbook.io/algo + +有部分读者反映 GitBook 访问速度较慢,我特意部署了两个镜像站点,大家可根据网络情况自行选择: + +GitHub Pages 地址:https://labuladong.github.io/algo -2、**建议收藏我的 Gitbook 网站,每篇文章开头都有对应的力扣题目链接,可以边看文章边刷题**: +Gitee Pages 地址:https://labuladong.gitee.io/algo -Gitbook 地址:https://labuladong.gitbook.io/algo/ -3、建议关注我的公众号 **labuladong**,坚持高质量原创,说是最良心最硬核的技术公众号都不为过。本仓库的文章就是从公众号里整理出来的**一部分**内容,公众号后台回复关键词【电子书】可以获得这份小抄的完整版本;回复【加群】可以加入我们的刷题群,和大家一起讨论算法问题,分享内推机会: +**3、建议关注我的公众号 labuladong,坚持高质量原创,说是最良心最硬核的技术公众号都不为过**。本仓库的文章就是从公众号里整理出来的**一部分**内容,公众号可以查看更多内容;公众号后台回复关键词【加群】可以加入我们的刷题群,和大家一起讨论算法问题,分享内推机会:

-4、欢迎关注 [我的知乎](https://www.zhihu.com/people/labuladong)。 +**4、欢迎关注 [我的知乎](https://www.zhihu.com/people/labuladong)**。 -我一直在写优质文章,但是后续的文章只发布到公众号/gitbook/知乎,不能开放到 GitHub。因为本仓库太火了,很多人直接拿我的文章去开付费专栏,价格还不便宜,我这免费写给您看,何必掏冤枉钱呢?所以多多关注本作者,多多宣传,谁也不希望劣币驱逐良币不是么? +我一直在写优质文章,但是后续的文章只发布到公众号/网站/知乎,不能开放到 GitHub。因为本仓库太火了,很多人直接拿我的文章去开付费专栏,价格还不便宜,我这免费写给您看,何必掏冤枉钱呢?所以多多关注本作者,多多宣传,谁也不希望劣币驱逐良币不是么? 其他的先不多说了,直接上干货吧,我们一起搞定 LeetCode,感受一下支配算法的乐趣。 diff --git "a/\345\207\272\347\211\210\346\216\250\345\271\2771.jpeg" "b/\345\207\272\347\211\210\346\216\250\345\271\2771.jpeg" new file mode 100644 index 0000000000000000000000000000000000000000..6205bfee59f2363a6117d26ac667b50d06cb43cf GIT binary patch literal 122844 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 ly# Date: Thu, 7 Jan 2021 12:03:28 +0800 Subject: [PATCH 67/71] fixbug --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0858fff4b9..0a74a829e4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ English version repo and Gitbook is on [english branch](https://github.com/labul # labuladong 的算法小抄

-Website +Website GitHub

@@ -43,7 +43,7 @@ English version repo and Gitbook is on [english branch](https://github.com/labul Gitbook 地址:https://labuladong.gitbook.io/algo -有部分读者反映 GitBook 访问速度较慢,我特意部署了两个镜像站点,大家可根据网络情况自行选择: +GitBook 在国内访问速度很慢,且常被攻击,我特意部署了两个镜像站点,大家可根据网络情况自行选择: GitHub Pages 地址:https://labuladong.github.io/algo From 6e2126a860659a7165b61135ae6c36b172774f87 Mon Sep 17 00:00:00 2001 From: BruceCat <41747005+brucecat@users.noreply.github.com> Date: Sun, 7 Mar 2021 17:00:22 +0800 Subject: [PATCH 68/71] =?UTF-8?q?=E3=80=90739.=20Daily=20Temperatures?= =?UTF-8?q?=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\215\225\350\260\203\346\240\210.md" | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index feedf440f8..28b4f91e25 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -8,9 +8,11 @@

-![](../pictures/souyisou.png) + +![](pictures/souyisou.png) 相关推荐: + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) @@ -50,7 +52,7 @@ vector nextGreaterElement(vector& nums); 这个问题可以这样抽象思考:把数组的元素想象成并列站立的人,元素大小想象成人的身高。这些人面对你站成一列,如何求元素「2」的 Next Greater Number 呢?很简单,如果能够看到元素「2」,那么他后面可见的第一个人就是「2」的 Next Greater Number,因为比「2」小的元素身高不够,都被「2」挡住了,第一个露出来的就是答案。 -![](../pictures/%E5%8D%95%E8%B0%83%E6%A0%88/1.jpeg) +![](pictures/单调栈/1.jpeg) 这个情景很好理解吧?带着这个抽象的情景,先来看下代码。 @@ -142,7 +144,7 @@ while (true) { **对于这种需求,常用套路就是将数组长度翻倍**: -![](../pictures/%E5%8D%95%E8%B0%83%E6%A0%88/2.jpeg) +![](pictures/单调栈/2.jpeg) 这样,元素 3 就可以找到元素 4 作为 Next Greater Number 了,而且其他的元素都可以被正确地计算。 @@ -182,6 +184,10 @@ vector nextGreaterElements(vector& nums) {

======其他语言代码====== + +### java + +```java // 739. Daily Temperatures class Solution { public int[] dailyTemperatures(int[] T) { @@ -199,3 +205,5 @@ class Solution { return ans; } } +``` + From 20ce356b32a443b0656346197cf6e6603696cf2e Mon Sep 17 00:00:00 2001 From: BruceCat <41747005+brucecat@users.noreply.github.com> Date: Sun, 7 Mar 2021 17:04:58 +0800 Subject: [PATCH 69/71] =?UTF-8?q?=E3=80=90739.=20Daily=20Temperatures?= =?UTF-8?q?=E3=80=91=E3=80=90Java=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【739. Daily Temperatures】【Java】 --- .../\345\215\225\350\260\203\346\240\210.md" | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index 28b4f91e25..d49168b8a0 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -8,11 +8,9 @@

- -![](pictures/souyisou.png) +![](../pictures/souyisou.png) 相关推荐: - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) @@ -52,7 +50,7 @@ vector nextGreaterElement(vector& nums); 这个问题可以这样抽象思考:把数组的元素想象成并列站立的人,元素大小想象成人的身高。这些人面对你站成一列,如何求元素「2」的 Next Greater Number 呢?很简单,如果能够看到元素「2」,那么他后面可见的第一个人就是「2」的 Next Greater Number,因为比「2」小的元素身高不够,都被「2」挡住了,第一个露出来的就是答案。 -![](pictures/单调栈/1.jpeg) +![](../pictures/%E5%8D%95%E8%B0%83%E6%A0%88/1.jpeg) 这个情景很好理解吧?带着这个抽象的情景,先来看下代码。 @@ -144,7 +142,7 @@ while (true) { **对于这种需求,常用套路就是将数组长度翻倍**: -![](pictures/单调栈/2.jpeg) +![](../pictures/%E5%8D%95%E8%B0%83%E6%A0%88/2.jpeg) 这样,元素 3 就可以找到元素 4 作为 Next Greater Number 了,而且其他的元素都可以被正确地计算。 @@ -184,7 +182,6 @@ vector nextGreaterElements(vector& nums) {

======其他语言代码====== - ### java ```java From fbd5affbd24f742183e6cbb118240d46f0e80c25 Mon Sep 17 00:00:00 2001 From: labuladong Date: Wed, 17 Mar 2021 21:29:47 +0800 Subject: [PATCH 70/71] =?UTF-8?q?=E4=BF=AE=E6=AD=A3url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pictures/qrcode.jpg | Bin 17565 -> 27201 bytes ...71\351\205\215\347\256\227\346\263\225.md" | 6 +++--- ...32\345\274\210\351\227\256\351\242\230.md" | 8 ++++---- ...33\351\224\256\351\224\256\347\233\230.md" | 6 +++--- ...43\345\210\231\350\241\250\350\276\276.md" | 6 +++--- ...36\345\255\220\345\272\217\345\210\227.md" | 12 ++++++------ ...46\350\247\243\350\277\233\351\230\266.md" | 8 ++++---- ...41\347\245\250\351\227\256\351\242\230.md" | 6 +++--- ...56\351\242\230\346\250\241\346\235\277.md" | 6 +++--- .../\346\212\242\346\210\277\345\255\220.md" | 4 ++-- ...30\345\255\220\347\273\223\346\236\204.md" | 8 ++++---- ...61\345\255\220\345\272\217\345\210\227.md" | 6 +++--- ...26\350\276\221\350\267\235\347\246\273.md" | 6 +++--- ...03\345\272\246\351\227\256\351\242\230.md" | 6 +++--- ...41\350\233\213\350\277\233\351\230\266.md" | 6 +++--- ...41\350\233\213\351\227\256\351\242\230.md" | 8 ++++---- "\346\212\200\346\234\257/linuxshell.md" | 6 +++--- .../linux\350\277\233\347\250\213.md" | 6 +++--- .../redis\345\205\245\344\276\265.md" | 6 +++--- .../session\345\222\214cookie.md" | 6 +++--- ...03\344\271\240\345\271\263\345\217\260.md" | 6 +++--- ...06\347\240\201\346\212\200\346\234\257.md" | 8 ++++---- ...10\347\272\247\351\230\237\345\210\227.md" | 6 +++--- ...15\344\275\234\351\233\206\351\224\246.md" | 8 ++++---- .../\345\215\225\350\260\203\346\240\210.md" | 6 +++--- ...25\350\260\203\351\230\237\345\210\227.md" | 6 +++--- ...60\350\256\241\347\256\227\345\231\250.md" | 6 +++--- .../\350\256\276\350\256\241Twitter.md" | 6 +++--- ...04\344\270\200\351\203\250\345\210\206.md" | 6 +++--- ...36\347\216\260\351\230\237\345\210\227.md" | 6 +++--- ...43\345\217\212\345\272\224\347\224\250.md" | 8 ++++---- ...27\346\263\225\345\272\224\347\224\250.md" | 6 +++--- ...27\346\263\225\350\257\246\350\247\243.md" | 6 +++--- ...70\345\277\203\346\200\235\346\203\263.md" | 6 +++--- ...0\350\215\220\347\256\227\346\263\2254.md" | 6 +++--- ...45\346\211\276\350\257\246\350\247\243.md" | 6 +++--- ...14\345\245\227\351\227\256\351\242\230.md" | 8 ++++---- ...02\347\216\207\351\227\256\351\242\230.md" | 8 ++++---- ...00\345\222\214\346\212\200\345\267\247.md" | 6 +++--- ...44\351\233\206\351\227\256\351\242\230.md" | 6 +++--- ...72\351\227\264\345\220\210\345\271\266.md" | 6 +++--- ...07\351\222\210\346\212\200\345\267\247.md" | 8 ++++---- ...43\344\277\256\350\256\242\347\211\210.md" | 6 +++--- ...46\344\270\262\344\271\230\346\263\225.md" | 6 +++--- ...30\346\225\210\346\226\271\346\263\225.md" | 14 +++++++------- ...04\344\275\215\346\223\215\344\275\234.md" | 6 +++--- ...27\347\211\214\347\256\227\346\263\225.md" | 6 +++--- ...27\345\217\243\346\212\200\345\267\247.md" | 6 +++--- ...47\351\245\274\346\216\222\345\272\217.md" | 8 ++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 6 +++--- ...22\345\275\222\350\257\246\350\247\243.md" | 6 +++--- .../LRU\347\256\227\346\263\225.md" | 6 +++--- ...ko\345\201\267\351\246\231\350\225\211.md" | 6 +++--- ...15\350\275\254\351\223\276\350\241\250.md" | 8 ++++---- ...04\346\231\272\345\212\233\351\242\230.md" | 6 +++--- ...32\345\255\220\345\272\217\345\210\227.md" | 10 +++++----- ...36\346\226\207\351\223\276\350\241\250.md" | 6 +++--- ...54\345\217\267\345\210\244\345\256\232.md" | 6 +++--- ...15\345\244\215\345\205\203\347\264\240.md" | 2 +- ...22\345\210\227\347\273\204\345\220\210.md" | 6 +++--- ...47\344\275\215\350\260\203\345\272\246.md" | 6 +++--- ...23\345\215\260\347\264\240\346\225\260.md" | 6 +++--- .../\346\216\245\351\233\250\346\260\264.md" | 6 +++--- ...36\346\226\207\345\255\220\344\270\262.md" | 6 +++--- ...64\345\241\230\346\212\275\346\240\267.md" | 6 +++--- ...61\347\232\204\345\205\203\347\264\240.md" | 6 +++--- ...15\347\232\204\345\205\203\347\264\240.md" | 6 +++--- 67 files changed, 216 insertions(+), 216 deletions(-) diff --git a/pictures/qrcode.jpg b/pictures/qrcode.jpg index 590f0fd7d538ab858e5e2b97cadae6c8688cce92..83e46cb25f6b9788c224f8beb4619cb9d4f0dad2 100644 GIT binary patch literal 27201 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 literal 17565 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 Qv&_KM=596>bo}c70Q(==O8@`> diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" index 5cde805a16..37a597be00 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213KMP\345\255\227\347\254\246\345\214\271\351\205\215\347\256\227\346\263\225.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [经典动态规划:最长公共子序列](https://labuladong.gitbook.io/algo) - * [特殊数据结构:单调栈](https://labuladong.gitbook.io/algo) + * [经典动态规划:最长公共子序列](https://labuladong.gitbook.io/algo/) + * [特殊数据结构:单调栈](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -423,7 +423,7 @@ KMP 算法也就是动态规划那点事,我们的公众号文章目录有一 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" index f9082d8def..c75749ad25 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\215\232\345\274\210\351\227\256\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [40张图解:TCP三次握手和四次挥手面试题](https://labuladong.gitbook.io/algo) - * [如何计算完全二叉树的节点数](https://labuladong.gitbook.io/algo) + * [40张图解:TCP三次握手和四次挥手面试题](https://labuladong.gitbook.io/algo/) + * [如何计算完全二叉树的节点数](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -20,7 +20,7 @@ **-----------** -上一篇文章 [几道智力题](https://labuladong.gitbook.io/algo) 中讨论到一个有趣的「石头游戏」,通过题目的限制条件,这个游戏是先手必胜的。但是智力题终究是智力题,真正的算法问题肯定不会是投机取巧能搞定的。所以,本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。 +上一篇文章 [几道智力题](https://labuladong.gitbook.io/algo/) 中讨论到一个有趣的「石头游戏」,通过题目的限制条件,这个游戏是先手必胜的。但是智力题终究是智力题,真正的算法问题肯定不会是投机取巧能搞定的。所以,本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。 博弈类问题的套路都差不多,下文参考 [这个 YouTube 视频](https://www.youtube.com/watch?v=WxpIHvsu1RI) 的思路讲解,其核心思路是在二维 dp 的基础上使用元组分别存储两个人的博弈结果。掌握了这个技巧以后,别人再问你什么俩海盗分宝石,俩人拿硬币的问题,你就告诉别人:我懒得想,直接给你写个算法算一下得了。 @@ -207,7 +207,7 @@ int stoneGame(int[] piles) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\233\233\351\224\256\351\224\256\347\233\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\233\233\351\224\256\351\224\256\347\233\230.md" index e2641f5b33..312cad1f0e 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\233\233\351\224\256\351\224\256\347\233\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\345\233\233\351\224\256\351\224\256\347\233\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何高效寻找素数](https://labuladong.gitbook.io/algo) - * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) + * [如何高效寻找素数](https://labuladong.gitbook.io/algo/) + * [动态规划解题套路框架](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -192,7 +192,7 @@ def dp(n, a_num, copy): **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\346\255\243\345\210\231\350\241\250\350\276\276.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\346\255\243\345\210\231\350\241\250\350\276\276.md" index 9190afc314..a3d13bd0e7 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\346\255\243\345\210\231\350\241\250\350\276\276.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\344\271\213\346\255\243\345\210\231\350\241\250\350\276\276.md" @@ -10,8 +10,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitbook.io/algo) - * [二分查找高效判定子序列](https://labuladong.gitbook.io/algo) + * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitbook.io/algo/) + * [二分查找高效判定子序列](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -287,7 +287,7 @@ bool dp(string& s, int i, string& p, int j) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" index edef47328c..55aeb8dc11 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\256\276\350\256\241\357\274\232\346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" @@ -10,8 +10,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [动态规划设计:最大子数组](https://labuladong.gitbook.io/algo) - * [一文学会递归解题](https://labuladong.gitbook.io/algo) + * [动态规划设计:最大子数组](https://labuladong.gitbook.io/algo/) + * [一文学会递归解题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -19,7 +19,7 @@ **-----------** -也许有读者看了前文 [动态规划详解](https://labuladong.gitbook.io/algo),学会了动态规划的套路:找到了问题的「状态」,明确了 `dp` 数组/函数的含义,定义了 base case;但是不知道如何确定「选择」,也就是不到状态转移的关系,依然写不出动态规划解法,怎么办? +也许有读者看了前文 [动态规划详解](https://labuladong.gitbook.io/algo/),学会了动态规划的套路:找到了问题的「状态」,明确了 `dp` 数组/函数的含义,定义了 base case;但是不知道如何确定「选择」,也就是不到状态转移的关系,依然写不出动态规划解法,怎么办? 不要担心,动态规划的难点本来就在于寻找正确的状态转移方程,本文就借助经典的「最长递增子序列问题」来讲一讲设计动态规划的通用技巧:**数学归纳思想**。 @@ -43,7 +43,7 @@ **我们的定义是这样的:`dp[i]` 表示以 `nums[i]` 这个数结尾的最长递增子序列的长度。** -PS:为什么这样定义呢?这是解决子序列问题的一个套路,后文[动态规划之子序列问题解题模板](https://labuladong.gitbook.io/algo) 总结了几种常见套路。你读完本章所有的动态规划问题,就会发现 `dp` 数组的定义方法也就那几种。 +PS:为什么这样定义呢?这是解决子序列问题的一个套路,后文[动态规划之子序列问题解题模板](https://labuladong.gitbook.io/algo/) 总结了几种常见套路。你读完本章所有的动态规划问题,就会发现 `dp` 数组的定义方法也就那几种。 根据这个定义,我们就可以推出 base case:`dp[i]` 初始值为 1,因为以 `nums[i]` 结尾的最长递增子序列起码要包含它自己。 @@ -164,7 +164,7 @@ public int lengthOfLIS(int[] nums) { 我们只要把处理扑克牌的过程编程写出来即可。每次处理一张扑克牌不是要找一个合适的牌堆顶来放吗,牌堆顶的牌不是**有序**吗,这就能用到二分查找了:用二分查找来搜索当前牌应放置的位置。 -PS:旧文[二分查找算法详解](https://labuladong.gitbook.io/algo)详细介绍了二分查找的细节及变体,这里就完美应用上了,如果没读过强烈建议阅读。 +PS:旧文[二分查找算法详解](https://labuladong.gitbook.io/algo/)详细介绍了二分查找的细节及变体,这里就完美应用上了,如果没读过强烈建议阅读。 ```java public int lengthOfLIS(int[] nums) { @@ -207,7 +207,7 @@ public int lengthOfLIS(int[] nums) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" index f51608e184..6ce71faa28 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\212\250\346\200\201\350\247\204\345\210\222\350\257\246\350\247\243\350\277\233\351\230\266.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [经典动态规划:完全背包问题](https://labuladong.gitbook.io/algo) - * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo) + * [经典动态规划:完全背包问题](https://labuladong.gitbook.io/algo/) + * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -216,7 +216,7 @@ int coinChange(int[] coins, int amount); 回到凑零钱问题,为什么说它符合最优子结构呢?比如你想求 `amount = 11` 时的最少硬币数(原问题),如果你知道凑出 `amount = 10` 的最少硬币数(子问题),你只需要把子问题的答案加一(再选一枚面值为 1 的硬币)就是原问题的答案。因为硬币的数量是没有限制的,所以子问题之间没有相互制,是互相独立的。 -PS:关于最优子结构的问题,后文[动态规划答疑篇](https://labuladong.gitbook.io/algo) 还会再举例探讨。 +PS:关于最优子结构的问题,后文[动态规划答疑篇](https://labuladong.gitbook.io/algo/) 还会再举例探讨。 那么,既然知道了这是个动态规划问题,就要思考**如何列出正确的状态转移方程**? @@ -360,7 +360,7 @@ PS:为啥 `dp` 数组初始化为 `amount + 1` 呢,因为凑成 `amount` 金 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\233\242\347\201\255\350\202\241\347\245\250\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\233\242\347\201\255\350\202\241\347\245\250\351\227\256\351\242\230.md" index 61f64a36a5..f34d173e18 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\233\242\347\201\255\350\202\241\347\245\250\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\233\242\347\201\255\350\202\241\347\245\250\351\227\256\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [动态规划之KMP字符匹配算法](https://labuladong.gitbook.io/algo) - * [如何判断回文链表](https://labuladong.gitbook.io/algo) + * [动态规划之KMP字符匹配算法](https://labuladong.gitbook.io/algo/) + * [如何判断回文链表](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -420,7 +420,7 @@ int maxProfit_k_any(int max_k, int[] prices) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\255\220\345\272\217\345\210\227\351\227\256\351\242\230\346\250\241\346\235\277.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\255\220\345\272\217\345\210\227\351\227\256\351\242\230\346\250\241\346\235\277.md" index c7a3d5ac5a..1f2570a095 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\255\220\345\272\217\345\210\227\351\227\256\351\242\230\346\250\241\346\235\277.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\345\255\220\345\272\217\345\210\227\351\227\256\351\242\230\346\250\241\346\235\277.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [洗牌算法](https://labuladong.gitbook.io/algo) - * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo) + * [洗牌算法](https://labuladong.gitbook.io/algo/) + * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -166,7 +166,7 @@ int longestPalindromeSubseq(string s) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,labuladong 带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\212\242\346\210\277\345\255\220.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\212\242\346\210\277\345\255\220.md" index 081c583ac2..f2e2541121 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\212\242\346\210\277\345\255\220.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\212\242\346\210\277\345\255\220.md" @@ -10,7 +10,7 @@ ![](../pictures/souyisou.png) 相关推荐: - * [动态规划之四键键盘](https://labuladong.gitbook.io/algo) + * [动态规划之四键键盘](https://labuladong.gitbook.io/algo/) * [经典动态规划:子集背包问题](/https://labuladong.gitbook.io/algo) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -250,7 +250,7 @@ int[] dp(TreeNode root) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\344\274\230\345\255\220\347\273\223\346\236\204.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\344\274\230\345\255\220\347\273\223\346\236\204.md" index caf68cfe98..808f6a6190 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\344\274\230\345\255\220\347\273\223\346\236\204.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\344\274\230\345\255\220\347\273\223\346\236\204.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [搜索引擎背后的经典数据结构和算法](https://labuladong.gitbook.io/algo) - * [动态规划之四键键盘](https://labuladong.gitbook.io/algo) + * [搜索引擎背后的经典数据结构和算法](https://labuladong.gitbook.io/algo/) + * [动态规划之四键键盘](https://labuladong.gitbook.io/algo/) **-----------** @@ -54,7 +54,7 @@ return result; 当然,上面这个例子太简单了,不过请读者回顾一下,我们做动态规划问题,是不是一直在求各种最值,本质跟我们举的例子没啥区别,无非需要处理一下重叠子问题。 -前文不[同定义不同解法](https://labuladong.gitbook.io/algo) 和 [高楼扔鸡蛋进阶](https://labuladong.gitbook.io/algo) 就展示了如何改造问题,不同的最优子结构,可能导致不同的解法和效率。 +前文不[同定义不同解法](https://labuladong.gitbook.io/algo/) 和 [高楼扔鸡蛋进阶](https://labuladong.gitbook.io/algo/) 就展示了如何改造问题,不同的最优子结构,可能导致不同的解法和效率。 再举个常见但也十分简单的例子,求一棵二叉树的最大值,不难吧(简单起见,假设节点中的值都是非负数): @@ -149,7 +149,7 @@ for (int i = 1; i < m; i++) **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" index bff1721aa8..7117ba90a2 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) - * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo) + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) + * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -139,7 +139,7 @@ else: **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" index 5c4d6c6987..5d634fb055 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\347\274\226\350\276\221\350\267\235\347\246\273.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [labuladong优质作者扶持计划](https://labuladong.gitbook.io/algo) - * [动态规划设计:最大子数组](https://labuladong.gitbook.io/algo) + * [labuladong优质作者扶持计划](https://labuladong.gitbook.io/algo/) + * [动态规划设计:最大子数组](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -283,7 +283,7 @@ class Node { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" index 3660bdc5ea..268654b4e5 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何判定括号合法性](https://labuladong.gitbook.io/algo) - * [一文解决三道区间问题](https://labuladong.gitbook.io/algo) + * [如何判定括号合法性](https://labuladong.gitbook.io/algo/) + * [一文解决三道区间问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -150,7 +150,7 @@ int findMinArrowShots(int[][] intvs) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\350\277\233\351\230\266.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\350\277\233\351\230\266.md" index ec5e838a26..53ebb02112 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\350\277\233\351\230\266.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\350\277\233\351\230\266.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第二期)](https://labuladong.gitbook.io/algo) - * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第二期)](https://labuladong.gitbook.io/algo/) + * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -287,7 +287,7 @@ while (lo < hi) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\351\227\256\351\242\230.md" index 68bd9b8655..af76a51226 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\351\253\230\346\245\274\346\211\224\351\270\241\350\233\213\351\227\256\351\242\230.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何判断回文链表](https://labuladong.gitbook.io/algo) - * [SQL进阶技巧](https://labuladong.gitbook.io/algo) + * [如何判断回文链表](https://labuladong.gitbook.io/algo/) + * [SQL进阶技巧](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -243,7 +243,7 @@ def superEggDrop(self, K: int, N: int) -> int: return dp(K, N) ``` -这里就不展开其他解法了,留在下一篇文章 [高楼扔鸡蛋进阶](https://labuladong.gitbook.io/algo) +这里就不展开其他解法了,留在下一篇文章 [高楼扔鸡蛋进阶](https://labuladong.gitbook.io/algo/) 我觉得吧,我们这种解法就够了:找状态,做选择,足够清晰易懂,可流程化,可举一反三。掌握这套框架学有余力的话,再去考虑那些奇技淫巧也不迟。 @@ -253,7 +253,7 @@ def superEggDrop(self, K: int, N: int) -> int: **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/linuxshell.md" "b/\346\212\200\346\234\257/linuxshell.md" index 41e581022c..055b0c6354 100644 --- "a/\346\212\200\346\234\257/linuxshell.md" +++ "b/\346\212\200\346\234\257/linuxshell.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo) - * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo) + * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo/) + * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo/) **-----------** @@ -149,7 +149,7 @@ $ sudo /home/fdl/bin/connect.sh **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/linux\350\277\233\347\250\213.md" "b/\346\212\200\346\234\257/linux\350\277\233\347\250\213.md" index d0a9d8acd5..365ed46906 100644 --- "a/\346\212\200\346\234\257/linux\350\277\233\347\250\213.md" +++ "b/\346\212\200\346\234\257/linux\350\277\233\347\250\213.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [一文解决三道区间问题](https://labuladong.gitbook.io/algo) - * [Union-Find算法详解](https://labuladong.gitbook.io/algo) + * [一文解决三道区间问题](https://labuladong.gitbook.io/algo/) + * [Union-Find算法详解](https://labuladong.gitbook.io/algo/) **-----------** @@ -133,7 +133,7 @@ $ cmd1 | cmd2 | cmd3 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/redis\345\205\245\344\276\265.md" "b/\346\212\200\346\234\257/redis\345\205\245\344\276\265.md" index 36d18f09cf..8fbedbb0a3 100644 --- "a/\346\212\200\346\234\257/redis\345\205\245\344\276\265.md" +++ "b/\346\212\200\346\234\257/redis\345\205\245\344\276\265.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [烧饼排序](https://labuladong.gitbook.io/algo) - * [动态规划之正则表达](https://labuladong.gitbook.io/algo) + * [烧饼排序](https://labuladong.gitbook.io/algo/) + * [动态规划之正则表达](https://labuladong.gitbook.io/algo/) **-----------** @@ -98,7 +98,7 @@ Redis 监听的默认端口是 6379,我们设置它接收网卡 127.0.0.1 的 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/session\345\222\214cookie.md" "b/\346\212\200\346\234\257/session\345\222\214cookie.md" index 7fb7cb473f..03ce418d26 100644 --- "a/\346\212\200\346\234\257/session\345\222\214cookie.md" +++ "b/\346\212\200\346\234\257/session\345\222\214cookie.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何计算完全二叉树的节点数](https://labuladong.gitbook.io/algo) - * [Linux的进程、线程、文件描述符是什么](https://labuladong.gitbook.io/algo) + * [如何计算完全二叉树的节点数](https://labuladong.gitbook.io/algo/) + * [Linux的进程、线程、文件描述符是什么](https://labuladong.gitbook.io/algo/) **-----------** @@ -147,7 +147,7 @@ https://github.com/astaxie/build-web-application-with-golang **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/\345\234\250\347\272\277\347\273\203\344\271\240\345\271\263\345\217\260.md" "b/\346\212\200\346\234\257/\345\234\250\347\272\277\347\273\203\344\271\240\345\271\263\345\217\260.md" index 28f21ffcfd..ba865936ca 100644 --- "a/\346\212\200\346\234\257/\345\234\250\347\272\277\347\273\203\344\271\240\345\271\263\345\217\260.md" +++ "b/\346\212\200\346\234\257/\345\234\250\347\272\277\347\273\203\344\271\240\345\271\263\345\217\260.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo) - * [别再说你不懂Linux内存管理了,10张图给你安排的明明白白](https://labuladong.gitbook.io/algo) + * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo/) + * [别再说你不懂Linux内存管理了,10张图给你安排的明明白白](https://labuladong.gitbook.io/algo/) **-----------** @@ -111,7 +111,7 @@ https://sqlzoo.net/ **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\212\200\346\234\257/\345\257\206\347\240\201\346\212\200\346\234\257.md" "b/\346\212\200\346\234\257/\345\257\206\347\240\201\346\212\200\346\234\257.md" index 011352ce09..9ab3b71ab0 100644 --- "a/\346\212\200\346\234\257/\345\257\206\347\240\201\346\212\200\346\234\257.md" +++ "b/\346\212\200\346\234\257/\345\257\206\347\240\201\346\212\200\346\234\257.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo) - * [一个方法团灭 nSum 问题](https://labuladong.gitbook.io/algo) + * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo/) + * [一个方法团灭 nSum 问题](https://labuladong.gitbook.io/algo/) **-----------** @@ -194,7 +194,7 @@ HTTPS 协议中的 SSL/TLS 安全层会组合使用以上几种加密方式,** **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 @@ -203,4 +203,4 @@ HTTPS 协议中的 SSL/TLS 安全层会组合使用以上几种加密方式,**

======其他语言代码====== -[test ad](https://labuladong.gitbook.io/algo) \ No newline at end of file +[test ad](https://labuladong.gitbook.io/algo/) \ No newline at end of file diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\345\240\206\350\257\246\350\247\243\345\256\236\347\216\260\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\345\240\206\350\257\246\350\247\243\345\256\236\347\216\260\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227.md" index 5353625464..72c98cfe34 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\345\240\206\350\257\246\350\247\243\345\256\236\347\216\260\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\345\240\206\350\257\246\350\247\243\345\256\236\347\216\260\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [算法就像搭乐高:带你手撸 LRU 算法](https://labuladong.gitbook.io/algo) - * [拆解复杂问题:实现计算器](https://labuladong.gitbook.io/algo) + * [算法就像搭乐高:带你手撸 LRU 算法](https://labuladong.gitbook.io/algo/) + * [拆解复杂问题:实现计算器](https://labuladong.gitbook.io/algo/) **-----------** @@ -231,7 +231,7 @@ public Key delMax() { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index ffe8b5cddf..8aef92e468 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo) - * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo) + * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo/) + * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -28,7 +28,7 @@ **-----------** -通过之前的文章[框架思维](https://labuladong.gitbook.io/algo),二叉树的遍历框架应该已经印到你的脑子里了,这篇文章就来实操一下,看看框架思维是怎么灵活运用,秒杀一切二叉树问题的。 +通过之前的文章[框架思维](https://labuladong.gitbook.io/algo/),二叉树的遍历框架应该已经印到你的脑子里了,这篇文章就来实操一下,看看框架思维是怎么灵活运用,秒杀一切二叉树问题的。 二叉树算法的设计的总路线:明确一个节点要做的事情,然后剩下的事抛给框架。 @@ -302,7 +302,7 @@ void BST(TreeNode root, int target) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index 1ee8ef4377..93a77f1e63 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: -* [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) - * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) +* [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) + * [动态规划解题套路框架](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -173,7 +173,7 @@ vector nextGreaterElements(vector& nums) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" index 140391ec54..54f5e6ef0c 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\351\230\237\345\210\227.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [几个反直觉的概率问题](https://labuladong.gitbook.io/algo) - * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo) + * [几个反直觉的概率问题](https://labuladong.gitbook.io/algo/) + * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -202,7 +202,7 @@ vector maxSlidingWindow(vector& nums, int k) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\256\236\347\216\260\350\256\241\347\256\227\345\231\250.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\256\236\347\216\260\350\256\241\347\256\227\345\231\250.md" index 2b980f745e..384a86f92a 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\256\236\347\216\260\350\256\241\347\256\227\345\231\250.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\256\236\347\216\260\350\256\241\347\256\227\345\231\250.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo) - * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo) + * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo/) + * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -298,7 +298,7 @@ def calculate(s: str) -> int: **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" index 5f6c5f53c1..96db45541c 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\350\256\276\350\256\241Twitter.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [面试官:你说对MySQL事务很熟?那我问你10个问题](https://labuladong.gitbook.io/algo) - * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo) + * [面试官:你说对MySQL事务很熟?那我问你10个问题](https://labuladong.gitbook.io/algo/) + * [一行代码就能解决的算法题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -294,7 +294,7 @@ PS:本文前两张图片和 GIF 是我第一次尝试用平板的绘图软件 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" index 1f8bca2848..ed08996a39 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\200\222\345\275\222\345\217\215\350\275\254\351\223\276\350\241\250\347\232\204\344\270\200\351\203\250\345\210\206.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo) - * [回溯算法最佳实践:括号生成](https://labuladong.gitbook.io/algo) + * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo/) + * [回溯算法最佳实践:括号生成](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -210,7 +210,7 @@ ListNode reverseBetween(ListNode head, int m, int n) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 20b6a8e54d..a9d34465f3 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo) - * [高性能短链设计](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo/) + * [高性能短链设计](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -222,7 +222,7 @@ public boolean empty() { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/FloodFill\347\256\227\346\263\225\350\257\246\350\247\243\345\217\212\345\272\224\347\224\250.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/FloodFill\347\256\227\346\263\225\350\257\246\350\247\243\345\217\212\345\272\224\347\224\250.md" index 1cf2dbf2b8..28b0fa5a4b 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/FloodFill\347\256\227\346\263\225\350\257\246\350\247\243\345\217\212\345\272\224\347\224\250.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/FloodFill\347\256\227\346\263\225\350\257\246\350\247\243\345\217\212\345\272\224\347\224\250.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何高效进行模幂运算](https://labuladong.gitbook.io/algo) - * [经典动态规划:0-1 背包问题](https://labuladong.gitbook.io/algo) + * [如何高效进行模幂运算](https://labuladong.gitbook.io/algo/) + * [经典动态规划:0-1 背包问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -126,7 +126,7 @@ image[x][y] = newColor; 完全 OK,这也是处理「图」的一种常用手段。不过对于此题,不用开数组,我们有一种更好的方法,那就是回溯算法。 -前文 [回溯算法框架套路](https://labuladong.gitbook.io/algo)讲过,这里不再赘述,直接套回溯算法框架: +前文 [回溯算法框架套路](https://labuladong.gitbook.io/algo/)讲过,这里不再赘述,直接套回溯算法框架: ```java void fill(int[][] image, int x, int y, @@ -231,7 +231,7 @@ int fill(int[][] image, int x, int y, **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" index c3ce82fc2c..1217326aed 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\345\272\224\347\224\250.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第一期)](https://labuladong.gitbook.io/algo) - * [二分查找详解](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第一期)](https://labuladong.gitbook.io/algo/) + * [二分查找详解](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -244,7 +244,7 @@ boolean equationsPossible(String[] equations) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\350\257\246\350\247\243.md" index 977d8baaf5..32e37de8aa 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/UnionFind\347\256\227\346\263\225\350\257\246\350\247\243.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [一文秒杀四道原地修改数组的算法题](https://labuladong.gitbook.io/algo) - * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo) + * [一文秒杀四道原地修改数组的算法题](https://labuladong.gitbook.io/algo/) + * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo/) **-----------** @@ -309,7 +309,7 @@ Union-Find 算法的复杂度可以这样分析:构造函数初始化数据结 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" index 3ee490959d..a1a92c5546 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/twoSum\351\227\256\351\242\230\347\232\204\346\240\270\345\277\203\346\200\235\346\203\263.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitbook.io/algo) - * [经典动态规划:完全背包问题](https://labuladong.gitbook.io/algo) + * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitbook.io/algo/) + * [经典动态规划:完全背包问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -177,7 +177,7 @@ int[] twoSum(int[] nums, int target) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\270\272\344\273\200\344\271\210\346\216\250\350\215\220\347\256\227\346\263\2254.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\270\272\344\273\200\344\271\210\346\216\250\350\215\220\347\256\227\346\263\2254.md" index 8792b9cb3b..ff2432627f 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\270\272\344\273\200\344\271\210\346\216\250\350\215\220\347\256\227\346\263\2254.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\270\272\344\273\200\344\271\210\346\216\250\350\215\220\347\256\227\346\263\2254.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [递归反转链表的一部分](https://labuladong.gitbook.io/algo) - * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo) + * [递归反转链表的一部分](https://labuladong.gitbook.io/algo/) + * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo/) **-----------** @@ -93,7 +93,7 @@ **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" index 76cfd5fa9b..49f8f7f73d 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\350\257\246\350\247\243.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo) - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo/) + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -500,7 +500,7 @@ int right_bound(int[] nums, int target) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\277\241\345\260\201\345\265\214\345\245\227\351\227\256\351\242\230.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\277\241\345\260\201\345\265\214\345\245\227\351\227\256\351\242\230.md" index bd6997f2b2..a31453cd66 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\277\241\345\260\201\345\265\214\345\245\227\351\227\256\351\242\230.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\344\277\241\345\260\201\345\265\214\345\245\227\351\227\256\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [讲两道常考的阶乘算法题](https://labuladong.gitbook.io/algo) - * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo) + * [讲两道常考的阶乘算法题](https://labuladong.gitbook.io/algo/) + * [状态压缩:对动态规划进行降维打击](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -22,7 +22,7 @@ 很多算法问题都需要排序技巧,其难点不在于排序本身,而是需要巧妙地排序进行预处理,将算法问题进行转换,为之后的操作打下基础。 -信封嵌套问题就需要先按特定的规则排序,之后就转换为一个 [最长递增子序列问题](https://labuladong.gitbook.io/algo),可以用前文 [二分查找详解](https://labuladong.gitbook.io/algo) 的技巧来解决了。 +信封嵌套问题就需要先按特定的规则排序,之后就转换为一个 [最长递增子序列问题](https://labuladong.gitbook.io/algo/),可以用前文 [二分查找详解](https://labuladong.gitbook.io/algo/) 的技巧来解决了。 ### 一、题目概述 @@ -127,7 +127,7 @@ public int lengthOfLIS(int[] nums) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\207\240\344\270\252\345\217\215\347\233\264\350\247\211\347\232\204\346\246\202\347\216\207\351\227\256\351\242\230.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\207\240\344\270\252\345\217\215\347\233\264\350\247\211\347\232\204\346\246\202\347\216\207\351\227\256\351\242\230.md" index 767a11f184..5a3adaee3f 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\207\240\344\270\252\345\217\215\347\233\264\350\247\211\347\232\204\346\246\202\347\216\207\351\227\256\351\242\230.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\207\240\344\270\252\345\217\215\347\233\264\350\247\211\347\232\204\346\246\202\347\216\207\351\227\256\351\242\230.md" @@ -11,12 +11,12 @@ ![](../pictures/souyisou.png) 相关推荐: - * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo) - * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitbook.io/algo) + * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo/) + * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitbook.io/algo/) **-----------** -上篇文章 [洗牌算法详解](https://labuladong.gitbook.io/algo) 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。 +上篇文章 [洗牌算法详解](https://labuladong.gitbook.io/algo/) 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。 计算概率有下面两个最简单的原则: @@ -133,7 +133,7 @@ **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\211\215\347\274\200\345\222\214\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\211\215\347\274\200\345\222\214\346\212\200\345\267\247.md" index ef9698648a..5a3d3ce1c5 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\211\215\347\274\200\345\222\214\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\211\215\347\274\200\345\222\214\346\212\200\345\267\247.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何去除有序数组的重复元素](https://labuladong.gitbook.io/algo) - * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo) + * [如何去除有序数组的重复元素](https://labuladong.gitbook.io/algo/) + * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -151,7 +151,7 @@ for (int i = 1; i < count.length; i++) **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" index b2ca23838f..7e1aebd6ed 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [经典动态规划:编辑距离](https://labuladong.gitbook.io/algo) - * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo) + * [经典动态规划:编辑距离](https://labuladong.gitbook.io/algo/) + * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -125,7 +125,7 @@ def intervalIntersection(A, B): **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" index 7972184d5b..1aaaa17de3 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [Git原理之最近公共祖先](https://labuladong.gitbook.io/algo) - * [洗牌算法](https://labuladong.gitbook.io/algo) + * [Git原理之最近公共祖先](https://labuladong.gitbook.io/algo/) + * [洗牌算法](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -83,7 +83,7 @@ def merge(intervals): **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" index ff2aebea57..11f1b56ab8 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\217\214\346\214\207\351\222\210\346\212\200\345\267\247.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [一文秒杀四道原地修改数组的算法题](https://labuladong.gitbook.io/algo) - * [Linux的进程、线程、文件描述符是什么](https://labuladong.gitbook.io/algo) + * [一文秒杀四道原地修改数组的算法题](https://labuladong.gitbook.io/algo/) + * [Linux的进程、线程、文件描述符是什么](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -221,13 +221,13 @@ void reverse(int[] nums) { 这也许是双指针技巧的最高境界了,如果掌握了此算法,可以解决一大类子字符串匹配的问题,不过「滑动窗口」稍微比上述的这些算法复杂些。 -幸运的是,这类算法是有框架模板的,而且[这篇文章](https://labuladong.gitbook.io/algo)就讲解了「滑动窗口」算法模板,帮大家秒杀几道 LeetCode 子串匹配的问题。 +幸运的是,这类算法是有框架模板的,而且[这篇文章](https://labuladong.gitbook.io/algo/)就讲解了「滑动窗口」算法模板,帮大家秒杀几道 LeetCode 子串匹配的问题。 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\233\236\346\272\257\347\256\227\346\263\225\350\257\246\350\247\243\344\277\256\350\256\242\347\211\210.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\233\236\346\272\257\347\256\227\346\263\225\350\257\246\350\247\243\344\277\256\350\256\242\347\211\210.md" index 07e1bfba7d..37c373239c 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\233\236\346\272\257\347\256\227\346\263\225\350\257\246\350\247\243\344\277\256\350\256\242\347\211\210.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\233\236\346\272\257\347\256\227\346\263\225\350\257\246\350\247\243\344\277\256\350\256\242\347\211\210.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitbook.io/algo) - * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo) + * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitbook.io/algo/) + * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -301,7 +301,7 @@ def backtrack(...): **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" index 83d1087b51..966aafd5ec 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\227\347\254\246\344\270\262\344\271\230\346\263\225.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [关于 Linux shell 你必须知道的](https://labuladong.gitbook.io/algo) - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) + * [关于 Linux shell 你必须知道的](https://labuladong.gitbook.io/algo/) + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -93,7 +93,7 @@ string multiply(string num1, string num2) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\246\344\271\240\346\225\260\346\215\256\347\273\223\346\236\204\345\222\214\347\256\227\346\263\225\347\232\204\351\253\230\346\225\210\346\226\271\346\263\225.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\246\344\271\240\346\225\260\346\215\256\347\273\223\346\236\204\345\222\214\347\256\227\346\263\225\347\232\204\351\253\230\346\225\210\346\226\271\346\263\225.md" index a5beaf3fbe..54c0b8d2f3 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\246\344\271\240\346\225\260\346\215\256\347\273\223\346\236\204\345\222\214\347\256\227\346\263\225\347\232\204\351\253\230\346\225\210\346\226\271\346\263\225.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\255\246\344\271\240\346\225\260\346\215\256\347\273\223\346\236\204\345\222\214\347\256\227\346\263\225\347\232\204\351\253\230\346\225\210\346\226\271\346\263\225.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo) - * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo) + * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo/) + * [经典动态规划:高楼扔鸡蛋(进阶)](https://labuladong.gitbook.io/algo/) **-----------** @@ -130,7 +130,7 @@ N 叉树的遍历又可以扩展为图的遍历,因为图就是好几 N 叉棵 首先要明确的是,**数据结构是工具,算法是通过合适的工具解决特定问题的方法**。也就是说,学习算法之前,最起码得了解那些常用的数据结构,了解它们的特性和缺陷。 -那么该如何在 LeetCode 刷题呢?之前的文章[算法学习之路](https://labuladong.gitbook.io/algo)写过一些,什么按标签刷,坚持下去云云。现在距那篇文章已经过去将近一年了,我不说那些不痛不痒的话,直接说具体的建议: +那么该如何在 LeetCode 刷题呢?之前的文章[算法学习之路](https://labuladong.gitbook.io/algo/)写过一些,什么按标签刷,坚持下去云云。现在距那篇文章已经过去将近一年了,我不说那些不痛不痒的话,直接说具体的建议: **先刷二叉树,先刷二叉树,先刷二叉树**! @@ -214,7 +214,7 @@ void traverse(TreeNode* node) { 再举例吧,说几道我们之前文章写过的问题。 -[动态规划详解](https://labuladong.gitbook.io/algo)说过凑零钱问题,暴力解法就是遍历一棵 N 叉树: +[动态规划详解](https://labuladong.gitbook.io/algo/)说过凑零钱问题,暴力解法就是遍历一棵 N 叉树: ![](../pictures/动态规划详解进阶/5.jpg) @@ -247,7 +247,7 @@ def dp(n): 其实很多动态规划问题就是在遍历一棵树,你如果对树的遍历操作烂熟于心,起码知道怎么把思路转化成代码,也知道如何提取别人解法的核心思路。 -再看看回溯算法,前文[回溯算法详解](https://labuladong.gitbook.io/algo)干脆直接说了,回溯算法就是个 N 叉树的前后序遍历问题,没有例外。 +再看看回溯算法,前文[回溯算法详解](https://labuladong.gitbook.io/algo/)干脆直接说了,回溯算法就是个 N 叉树的前后序遍历问题,没有例外。 比如 N 皇后问题吧,主要代码如下: @@ -286,7 +286,7 @@ N 叉树的遍历框架,找出来了把~你说,树这种结构重不重要 但是,你要是心中没有框架,那么你根本无法解题,给了你答案,你也不会发现这就是个树的遍历问题。 -这种思维是很重要的,[动态规划详解](https://labuladong.gitbook.io/algo)中总结的找状态转移方程的几步流程,有时候按照流程写出解法,说实话我自己都不知道为啥是对的,反正它就是对了。。。 +这种思维是很重要的,[动态规划详解](https://labuladong.gitbook.io/algo/)中总结的找状态转移方程的几步流程,有时候按照流程写出解法,说实话我自己都不知道为啥是对的,反正它就是对了。。。 **这就是框架的力量,能够保证你在快睡着的时候,依然能写出正确的程序;就算你啥都不会,都能比别人高一个级别。** @@ -301,7 +301,7 @@ N 叉树的遍历框架,找出来了把~你说,树这种结构重不重要 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" index 98f3e4bf28..b56e56c316 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\270\270\347\224\250\347\232\204\344\275\215\346\223\215\344\275\234.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [40张图解:TCP三次握手和四次挥手面试题](https://labuladong.gitbook.io/algo) - * [动态规划答疑篇](https://labuladong.gitbook.io/algo) + * [40张图解:TCP三次握手和四次挥手面试题](https://labuladong.gitbook.io/algo/) + * [动态规划答疑篇](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -164,7 +164,7 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\264\227\347\211\214\347\256\227\346\263\225.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\264\227\347\211\214\347\256\227\346\263\225.md" index 463a7f183e..0ce3b64cf7 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\264\227\347\211\214\347\256\227\346\263\225.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\264\227\347\211\214\347\256\227\346\263\225.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [二叉搜索树操作集锦](https://labuladong.gitbook.io/algo) - * [动态规划解题套路框架](https://labuladong.gitbook.io/algo) + * [二叉搜索树操作集锦](https://labuladong.gitbook.io/algo/) + * [动态规划解题套路框架](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -203,7 +203,7 @@ for (int feq : count) **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" index e213979693..c116188afd 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\346\273\221\345\212\250\347\252\227\345\217\243\346\212\200\345\267\247.md" @@ -12,8 +12,8 @@ **最新消息:关注公众号参与活动,有机会成为 [70k star 算法仓库](https://github.com/labuladong/fucking-algorithm) 的贡献者,机不可失时不再来**! 相关推荐: -* [东哥吃葡萄时竟然吃出一道算法题!](https://labuladong.gitbook.io/algo) -* [如何寻找缺失的元素](https://labuladong.gitbook.io/algo) +* [东哥吃葡萄时竟然吃出一道算法题!](https://labuladong.gitbook.io/algo/) +* [如何寻找缺失的元素](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -363,7 +363,7 @@ class Solution: **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 6d4d456586..22ed46bea9 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo) - * [Union-Find算法应用](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo/) + * [Union-Find算法应用](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -34,7 +34,7 @@ ![](../pictures/pancakeSort/title.png) -如何解决这个问题呢?其实类似上篇文章 [递归反转链表的一部分](https://labuladong.gitbook.io/algo),这也是需要**递归思想**的。 +如何解决这个问题呢?其实类似上篇文章 [递归反转链表的一部分](https://labuladong.gitbook.io/algo/),这也是需要**递归思想**的。 ### 一、思路分析 @@ -141,7 +141,7 @@ void reverse(int[] arr, int i, int j) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\256\227\346\263\225\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\256\227\346\263\225\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0446ffa4ec..6f16d56aab 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\256\227\346\263\225\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\256\227\346\263\225\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo) - * [回溯算法团灭子集、排列、组合问题](https://labuladong.gitbook.io/algo) + * [Git/SQL/正则表达式的在线练习平台](https://labuladong.gitbook.io/algo/) + * [回溯算法团灭子集、排列、组合问题](https://labuladong.gitbook.io/algo/) **-----------** @@ -96,7 +96,7 @@ PS:**如果有的英文题目实在看不懂,有个小技巧**,你在题 **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\351\200\222\345\275\222\350\257\246\350\247\243.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\351\200\222\345\275\222\350\257\246\350\247\243.md" index b9a9928661..cc68a61e77 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\351\200\222\345\275\222\350\257\246\350\247\243.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\351\200\222\345\275\222\350\257\246\350\247\243.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo) - * [设计Twitter](https://labuladong.gitbook.io/algo) + * [特殊数据结构:单调队列](https://labuladong.gitbook.io/algo/) + * [设计Twitter](https://labuladong.gitbook.io/algo/) **-----------** @@ -267,7 +267,7 @@ https://leetcode.com/tag/divide-and-conquer/ **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" index caa550abbf..5215f188a2 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/LRU\347\256\227\346\263\225.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo) - * [如何在无限序列中随机抽取元素](https://labuladong.gitbook.io/algo) + * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo/) + * [如何在无限序列中随机抽取元素](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -338,7 +338,7 @@ class LRUCache { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" index e204552e86..2322bba49f 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/koko\345\201\267\351\246\231\350\225\211.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何运用贪心思想玩跳跃游戏](https://labuladong.gitbook.io/algo) - * [如何寻找最长回文子串](https://labuladong.gitbook.io/algo) + * [如何运用贪心思想玩跳跃游戏](https://labuladong.gitbook.io/algo/) + * [如何寻找最长回文子串](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -161,7 +161,7 @@ for (int i = 0; i < n; i++) **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/k\344\270\252\344\270\200\347\273\204\345\217\215\350\275\254\351\223\276\350\241\250.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/k\344\270\252\344\270\200\347\273\204\345\217\215\350\275\254\351\223\276\350\241\250.md" index 83fbd986c8..1766b4a159 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/k\344\270\252\344\270\200\347\273\204\345\217\215\350\275\254\351\223\276\350\241\250.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/k\344\270\252\344\270\200\347\273\204\345\217\215\350\275\254\351\223\276\350\241\250.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [区间调度之区间交集问题](https://labuladong.gitbook.io/algo) - * [动态规划和回溯算法到底谁是谁爹?](https://labuladong.gitbook.io/algo) + * [区间调度之区间交集问题](https://labuladong.gitbook.io/algo/) + * [动态规划和回溯算法到底谁是谁爹?](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -32,7 +32,7 @@ ### 一、分析问题 -首先,前文[学习数据结构的框架思维](https://labuladong.gitbook.io/algo)提到过,链表是一种兼具递归和迭代性质的数据结构,认真思考一下可以发现**这个问题具有递归性质**。 +首先,前文[学习数据结构的框架思维](https://labuladong.gitbook.io/algo/)提到过,链表是一种兼具递归和迭代性质的数据结构,认真思考一下可以发现**这个问题具有递归性质**。 什么叫递归性质?直接上图理解,比如说我们对这个链表调用 `reverseKGroup(head, 2)`,即以 2 个节点为一组反转链表: @@ -148,7 +148,7 @@ ListNode reverseKGroup(ListNode head, int k) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" index 0afa085582..af43a75da5 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\270\200\350\241\214\344\273\243\347\240\201\350\247\243\345\206\263\347\232\204\346\231\272\345\212\233\351\242\230.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo) - * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo) + * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo/) + * [我用四个命令概括了 Git 的所有套路](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -141,7 +141,7 @@ int bulbSwitch(int n) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" index e9c5b0fb51..f5228915d0 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\344\272\214\345\210\206\346\237\245\346\211\276\345\210\244\345\256\232\345\255\220\345\272\217\345\210\227.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo) - * [经典动态规划:子集背包问题](https://labuladong.gitbook.io/algo) + * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo/) + * [经典动态规划:子集背包问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -20,7 +20,7 @@ **-----------** -二分查找本身不难理解,难在巧妙地运用二分查找技巧。对于一个问题,你可能都很难想到它跟二分查找有关,比如前文 [最长递增子序列](https://labuladong.gitbook.io/algo) 就借助一个纸牌游戏衍生出二分查找解法。 +二分查找本身不难理解,难在巧妙地运用二分查找技巧。对于一个问题,你可能都很难想到它跟二分查找有关,比如前文 [最长递增子序列](https://labuladong.gitbook.io/algo/) 就借助一个纸牌游戏衍生出二分查找解法。 今天再讲一道巧用二分查找的算法问题:如何判定字符串 `s` 是否是字符串 `t` 的子序列(可以假定 `s` 长度比较小,且 `t` 的长度非常大)。举两个例子: @@ -95,7 +95,7 @@ for (int i = 0; i < n; i++) { ### 三、再谈二分查找 -在前文 [二分查找详解](https://labuladong.gitbook.io/algo) 中,详解了如何正确写出三种二分查找算法的细节。二分查找返回目标值 `val` 的索引,对于搜索**左侧边界**的二分查找,有一个特殊性质: +在前文 [二分查找详解](https://labuladong.gitbook.io/algo/) 中,详解了如何正确写出三种二分查找算法的细节。二分查找返回目标值 `val` 的索引,对于搜索**左侧边界**的二分查找,有一个特殊性质: **当 `val` 不存在时,得到的索引恰好是比 `val` 大的最小元素索引**。 @@ -160,7 +160,7 @@ boolean isSubsequence(String s, String t) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" index 4d0225a5e0..bb1a6aa05f 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\210\244\346\226\255\345\233\236\346\226\207\351\223\276\350\241\250.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何高效进行模幂运算](https://labuladong.gitbook.io/algo) - * [一文学会递归解题](https://labuladong.gitbook.io/algo) + * [如何高效进行模幂运算](https://labuladong.gitbook.io/algo/) + * [一文学会递归解题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -229,7 +229,7 @@ p.next = reverse(q); **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" index 6516aa1b53..c183b510d6 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\220\210\346\263\225\346\213\254\345\217\267\345\210\244\345\256\232.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) - * [Linux shell 的实用小技巧](https://labuladong.gitbook.io/algo) + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) + * [Linux shell 的实用小技巧](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -104,7 +104,7 @@ char leftOf(char c) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\246\202\344\275\225\345\216\273\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\246\202\344\275\225\345\216\273\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" index 1cdec24bdf..4e662a8aa0 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\246\202\344\275\225\345\216\273\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\246\202\344\275\225\345\216\273\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" @@ -110,7 +110,7 @@ def deleteDuplicates(self, head: ListNode) -> ListNode: **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" index bdb6bbe9d2..cda2e83e18 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo) - * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo) + * [回溯算法解题套路框架](https://labuladong.gitbook.io/algo/) + * [twoSum问题的核心思想](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -276,7 +276,7 @@ void backtrack(int[] nums, LinkedList track) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\272\247\344\275\215\350\260\203\345\272\246.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\272\247\344\275\215\350\260\203\345\272\246.md" index 21e45efe13..4fbca5f8bb 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\272\247\344\275\215\350\260\203\345\272\246.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\272\247\344\275\215\350\260\203\345\272\246.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [一个方法团灭 LeetCode 股票买卖问题](https://labuladong.gitbook.io/algo) - * [Linux shell 的实用小技巧](https://labuladong.gitbook.io/algo) + * [一个方法团灭 LeetCode 股票买卖问题](https://labuladong.gitbook.io/algo/) + * [Linux shell 的实用小技巧](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -225,7 +225,7 @@ private int distance(int[] intv) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\211\223\345\215\260\347\264\240\346\225\260.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\211\223\345\215\260\347\264\240\346\225\260.md" index 3a58074607..8e71f3e0e7 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\211\223\345\215\260\347\264\240\346\225\260.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\211\223\345\215\260\347\264\240\346\225\260.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [算法就像搭乐高:带你手撸 LRU 算法](https://labuladong.gitbook.io/algo) - * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo) + * [算法就像搭乐高:带你手撸 LRU 算法](https://labuladong.gitbook.io/algo/) + * [区间调度之区间合并问题](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -170,7 +170,7 @@ int countPrimes(int n) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" index a500aac0f7..87357fe250 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\216\245\351\233\250\346\260\264.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo) - * [45张图解:IP基础知识全家桶](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo/) + * [45张图解:IP基础知识全家桶](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -203,7 +203,7 @@ if (l_max < r_max) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" index d69b65ef16..58732779d2 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" @@ -12,8 +12,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [如何运用二分查找算法](https://labuladong.gitbook.io/algo) - * [动态规划答疑篇](https://labuladong.gitbook.io/algo) + * [如何运用二分查找算法](https://labuladong.gitbook.io/algo/) + * [动态规划答疑篇](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -123,7 +123,7 @@ string longestPalindrome(string s) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\260\264\345\241\230\346\212\275\346\240\267.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\260\264\345\241\230\346\212\275\346\240\267.md" index fe0dd09dc5..e107ef5d33 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\260\264\345\241\230\346\212\275\346\240\267.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\260\264\345\241\230\346\212\275\346\240\267.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [一文看懂 session 和 cookie](https://labuladong.gitbook.io/algo) - * [算法就像搭乐高:带你手撸 LFU 算法](https://labuladong.gitbook.io/algo) + * [一文看懂 session 和 cookie](https://labuladong.gitbook.io/algo/) + * [算法就像搭乐高:带你手撸 LFU 算法](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -140,7 +140,7 @@ $$ --> **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" index 355953e3ce..e434b5032a 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\346\266\210\345\244\261\347\232\204\345\205\203\347\264\240.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo) - * [回溯算法最佳实践:括号生成](https://labuladong.gitbook.io/algo) + * [学习算法和数据结构的思路指南](https://labuladong.gitbook.io/algo/) + * [回溯算法最佳实践:括号生成](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -125,7 +125,7 @@ public int missingNumber(int[] nums) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" index eb21f4c8cb..defccd33c9 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\347\274\272\345\244\261\345\222\214\351\207\215\345\244\215\347\232\204\345\205\203\347\264\240.md" @@ -11,8 +11,8 @@ ![](../pictures/souyisou.png) 相关推荐: - * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo) - * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitbook.io/algo/) + * [25 张图解:键入网址后,到网页显示,其间发生了什么](https://labuladong.gitbook.io/algo/) 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: @@ -131,7 +131,7 @@ vector findErrorNums(vector& nums) { **_____________** -**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。 +**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo/) 持续更新最新文章**。 **本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。 From cd6d12d96f07ceff32e52c34f29d79b7b83b1323 Mon Sep 17 00:00:00 2001 From: BruceCat <41747005+brucecat@users.noreply.github.com> Date: Sat, 20 Mar 2021 14:10:28 +0800 Subject: [PATCH 71/71] =?UTF-8?q?=E3=80=90100.=E7=9B=B8=E5=90=8C=E7=9A=84?= =?UTF-8?q?=E6=A0=91=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【100.相同的树】【C++】 --- ...40\221\346\223\215\344\275\234\351\233\206\351\224\246.md" | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index 158b1c9c9f..b3673199f6 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -309,8 +309,10 @@ void BST(TreeNode root, int target) {

+ ======其他语言代码====== -[dekunma](https://www.linkedin.com/in/dekun-ma-036a9b198/)提供第98题C++代码: + +[dekunma](https://www.linkedin.com/in/dekun-ma-036a9b198) 提供第98题C++代码: ```C++ /**