From 84569b8cd06a7181e59c032cfeb213ce81cc7774 Mon Sep 17 00:00:00 2001
From: Kian Kwok
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+// 739. Daily Temperatures
+class Solution {
+ public int[] dailyTemperatures(int[] T) {
+ Stack
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[happy-yuxuan](https://github.com/happy-yuxuan) 提供 三种方法的 C++ 代码:
+
+```c++
+// 方法:异或元素和索引
+int missingNumber(vector
-======其他语言代码======
\ 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 011/315] =?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
@@ -139,4 +139,30 @@ vector
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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 017/315] =?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
+
======其他语言代码======
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 019/315] =?UTF-8?q?=E3=80=90234.=E6=BB=91=E5=8A=A8?=
=?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=9C=80=E5=A4=A7=E5=80=BC=E3=80=91=E3=80=90?=
=?UTF-8?q?=E5=9B=9E=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
@@ -158,4 +158,43 @@ int findMinArrowShots(int[][] intvs) {
@@ -158,4 +158,44 @@ int findMinArrowShots(int[][] intvs) {
-======其他语言代码======
\ 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 3edeeb191e23f8cb6bc3afc942e2c52803e2a7e6 Mon Sep 17 00:00:00 2001
From: jasonlu
@@ -310,4 +310,56 @@ void BST(TreeNode root, int target) {
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[L-WEIWEI](https://github.com/L-WWEEII) 提供 第969题的 Java 代码:
+
+```java
+class Solution {
+ public List
-======其他语言代码======
\ 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 029/315] =?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
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[cchroot](https://github.com/cchroot) 提供 C++ 代码:
+
+```c++
+class Solution {
+public:
+ int minEatingSpeed(vector
-======其他语言代码======
\ 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 032/315] =?UTF-8?q?=E3=80=905.=20=E6=9C=80=E9=95=BF?=
=?UTF-8?q?=E5=9B=9E=E6=96=87=E5=AD=90=E4=B8=B2=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
提供 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 033/315] =?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):
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[fengshuu](https://github.com/fengshuu) 提供 C++ 解法代码:
+```cpp
+class Solution {
+public:
+ vector
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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
-======其他语言代码======
\ 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 042/315] =?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 043/315] =?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 044/315] =?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 045/315] =?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 046/315] =?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
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[Kian](https://github.com/KianKw/) 提供第 56 题 C++ 代码
+
+```c++
+class Solution {
+public:
+ vector
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+[KiraZh](https://github.com/KiraZh)提供第986题Java代码
+```java
+class Solution {
+ public int[][] intervalIntersection(int[][] A, int[][] B) {
+ List
@@ -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 056/315] =?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 057/315] =?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
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
From 10b33ea205d321e177bfec34be6fa77f6f5464d6 Mon Sep 17 00:00:00 2001
From: kepler-zc <15587673067@163.com>
Date: Mon, 16 Nov 2020 16:29:45 +0800
Subject: [PATCH 062/315] Java version of Nqueens
---
...43\344\277\256\350\256\242\347\211\210.md" | 65 ++++++++++++++++++-
1 file changed, 64 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\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..e3369884ab 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"
@@ -309,4 +309,67 @@ def backtrack(...):
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+由[kepler-zc](https://github.com/kepler-zc) 提供 51.N皇后 Java 解法代码:
+```java
+class solution {
+ private List
-======其他语言代码======
\ No newline at end of file
+======其他语言代码======
+
+[shilei](https://github.com/ShileiGuo) 提供C++解法代码:
+
+思想:
+
+ 1.head表示需要反转的头节点,pre表示需要反转头节点的前驱节点
+
+ 2.对于从m到n的节点反转,需要反转n-m次,将head的next节点移动到需要反转链表部分的首部,需要反转链表部分剩余节点依旧保持相对顺序即可
+
+ 3.示例 当m=2, n=5时
+
+ 第一次反转:1(pre) 2(head) 3(next) 4 5 反转为 1 3 2 4 5
+
+ 第二次反转:1(pre) 3 2(head) 4(next) 5 反转为 1 4 3 2 5
+
+ 第三次发转:1(pre) 4 3 2(head) 5(next) 反转为 1 5 4 3 2
+
+```CPP
+class Solution {
+public:
+ ListNode* reverseBetween(ListNode* head, int m, int n) {
+ //初始化哨兵节点
+ ListNode* dummy=new ListNode(-1);
+ //初始化待反转区间的前一个节点
+ ListNode* pre=dummy;
+ //哨兵节点下一个节点指向head头节点
+ dummy->next=head;
+
+ //获取待反转节点的前一个节点
+ for(int i=0;i
X=QEWc+cs+vx}>nkFTG9KwwaCiGt1t#Vl21u9Z4V*Ox
z=ZDts>8q&ZB`VyH&_BUYxY!77W6>YLPAZ@&(uM+|T);enVZ#k22e;efY)T6IN=Zch
zub*