Skip to content

Commit bc55b5f

Browse files
author
robot
committed
feat: v0.10.2
1 parent 0954568 commit bc55b5f

File tree

4 files changed

+116
-21
lines changed

4 files changed

+116
-21
lines changed

‎leetcode-cheat-0.10.2.zip

4.25 MB
Binary file not shown.

‎public/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"manifest_version": 2,
33
"name": "leetcode cheatsheet",
44
"description": "刷题小助手,made by 力扣加加",
5-
"version": "0.10.1",
5+
"version": "0.10.2",
66
"browser_action": {
77
"default_popup": "index.html",
88
"default_title": "力扣加加"

‎src/db/root.db.js

+93
Original file line numberDiff line numberDiff line change
@@ -6352,6 +6352,10 @@
63526352
{
63536353
"language": "cpp",
63546354
"text": "\nclass Solution {\npublic:\n vector<int> majorityElement(vector<int>& nums) {\n int c1 = 0, c2 = 0, v1 = 0, v2 = 1;\n for (int n : nums) {\n if (v1 == n) ++c1;\n else if (v2 == n) ++c2;\n else if (!c1) v1 = n, ++c1;\n else if (!c2) v2 = n, ++c2;\n else --c1, --c2;\n }\n c1 = c2 = 0;\n for (int n : nums) {\n if (v1 == n) ++c1;\n if (v2 == n) ++c2;\n }\n vector<int> v;\n if (c1 > nums.size() / 3) v.push_back(v1);\n if (c2 > nums.size() / 3) v.push_back(v2);\n return v;\n }\n};\n"
6355+
},
6356+
{
6357+
"language": "py",
6358+
"text": "\n\nclass Solution:\n def majorityElement(self, nums):\n c1 = c2 = 0\n v1 = v2 = -1\n\n for num in nums:\n if num == v1: c1 += 1\n elif num == v2: c2 += 1\n elif c1 == 0:\n c1 = 1\n v1 = num\n elif c2 == 0:\n c2 = 1\n v2 = num\n else:\n c1 -= 1\n c2 -= 1\n # check\n c1 = c2 = 0\n for num in nums:\n if v1 == num: c1 += 1\n if v2 == num: c2 += 1\n ans = []\n if c1 > len(nums)//3: ans.append(v1)\n if c2 > len(nums)//3: ans.append(v2)\n return list(set(ans))\n"
63556359
}
63566360
]
63576361
},
@@ -13271,6 +13275,37 @@
1327113275
}
1327213276
]
1327313277
},
13278+
"find-original-array-from-doubled-array":{
13279+
"id": "2007",
13280+
"name": "find-original-array-from-doubled-array",
13281+
"pre": [
13282+
{
13283+
"text": "哈希表",
13284+
"link": null,
13285+
"color": "gold"
13286+
}
13287+
],
13288+
"keyPoints": [
13289+
{
13290+
"text": "对changed进行排序后再处理",
13291+
"link": null,
13292+
"color": "blue"
13293+
}
13294+
],
13295+
"companies": [],
13296+
"giteeSolution": "https://gitee.com/golong/leetcode/blob/master/problems/2007.find-original-array-from-doubled-array.md",
13297+
"solution": "https://github.com/azl397985856/leetcode/blob/master/problems/2007.find-original-array-from-doubled-array.md",
13298+
"code": [
13299+
{
13300+
"language": "py",
13301+
"text": "\n\nclass Solution:\n def findOriginalArray(self, changed: List[int]) -> List[int]:\n counter = collections.Counter(changed)\n if counter[0] % 2: return []\n n = len(changed)\n changed.sort()\n ans = []\n for c in changed:\n if counter[c] < 1: continue\n double = c * 2\n if double in counter:\n ans.append(c)\n else:\n return []\n if double == 0:\n counter[double] -= 2\n else:\n counter[double] -= 1\n counter[c] -= 1\n if len(ans) == n // 2: return ans\n return []\n\n"
13302+
},
13303+
{
13304+
"language": "py",
13305+
"text": "\nclass Solution:\n def recoverArray(self, nums: List[int]) -> List[int]:\n n = len(nums)\n nums.sort()\n for i in range(n):\n # enumerate i, assueme that: nums[i] is higher[0]\n d = nums[i] - nums[0]\n if d == 0 or d & 1: continue # k 应该是大于 0 的整数\n k = d // 2\n counter = collections.Counter(nums)\n ans = []\n for key in sorted(counter):\n if counter[key + 2 * k] >= counter[key]:\n ans += [key + k] * counter[key]\n counter[key + 2 * k] -= counter[key]\n else:\n break # 剪枝(不剪枝的话实测 Python 也能通过,不过要多花很多时间)\n if len(ans) == n // 2: return ans\n return []\n"
13306+
}
13307+
]
13308+
},
1327413309
"maximum-earnings-from-taxi":{
1327513310
"id": "2008",
1327613311
"name": "maximum-earnings-from-taxi",
@@ -13529,6 +13564,33 @@
1352913564
}
1353013565
]
1353113566
},
13567+
"intervals-between-identical-elements":{
13568+
"id": "5965",
13569+
"name": "intervals-between-identical-elements",
13570+
"pre": [
13571+
{
13572+
"text": "前缀和",
13573+
"link": null,
13574+
"color": "cyan"
13575+
}
13576+
],
13577+
"keyPoints": [
13578+
{
13579+
"text": "前缀和+后缀和优化时间复杂度",
13580+
"link": null,
13581+
"color": "blue"
13582+
}
13583+
],
13584+
"companies": [],
13585+
"giteeSolution": "https://gitee.com/golong/leetcode/blob/master/problems/5965.intervals-between-identical-elements.md",
13586+
"solution": "https://github.com/azl397985856/leetcode/blob/master/problems/5965.intervals-between-identical-elements.md",
13587+
"code": [
13588+
{
13589+
"language": "py",
13590+
"text": "\n\nclass Solution:\n def getDistances(self, arr: List[int]) -> List[int]:\n ans = []\n n = len(arr)\n last_map = collections.defaultdict(lambda:-1)\n pre = collections.defaultdict(lambda:(0,0))\n suf = collections.defaultdict(lambda:(0,0))\n for i in range(n):\n a = arr[i]\n last = last_map[a]\n v, c = pre[last]\n pre[i] = v + c * (i - last), c + 1\n last_map[a] = i\n last_map = collections.defaultdict(lambda:len(arr))\n for i in range(n-1,-1,-1):\n a = arr[i]\n last = last_map[a]\n v, c = suf[last]\n suf[i] = v + c * (last - i), c + 1\n last_map[a] = i\n for i, a in enumerate(arr):\n ans.append(pre[i][0] + suf[i][0])\n return ans\n\n\n"
13591+
}
13592+
]
13593+
},
1353213594
"md":{
1353313595
"id": "Bus-Fare",
1353413596
"name": "md",
@@ -13748,6 +13810,37 @@
1374813810
}
1374913811
]
1375013812
},
13813+
"md":{
13814+
"id": "Maximize-the-Number-of-Equivalent-Pairs-After-Swaps",
13815+
"name": "md",
13816+
"pre": [
13817+
{
13818+
"text": "并查集",
13819+
"link": null,
13820+
"color": "volcano"
13821+
},
13822+
{
13823+
"text": "BFS",
13824+
"link": null,
13825+
"color": "purple"
13826+
},
13827+
{
13828+
"text": "DFS",
13829+
"link": null,
13830+
"color": "red"
13831+
}
13832+
],
13833+
"keyPoints": [],
13834+
"companies": [],
13835+
"giteeSolution": "https://gitee.com/golong/leetcode/blob/master/problems/Maximize-the-Number-of-Equivalent-Pairs-After-Swaps.md",
13836+
"solution": "https://github.com/azl397985856/leetcode/blob/master/problems/Maximize-the-Number-of-Equivalent-Pairs-After-Swaps.md",
13837+
"code": [
13838+
{
13839+
"language": "py",
13840+
"text": "\n\nclass UF:\n def __init__(self, M):\n self.parent = {}\n self.cnt = 0\n # 初始化 parent,size 和 cnt\n for i in range(M):\n self.parent[i] = i\n self.cnt += 1\n\n def find(self, x):\n if x != self.parent[x]:\n self.parent[x] = self.find(self.parent[x])\n return self.parent[x]\n return x\n def union(self, p, q):\n if self.connected(p, q): return\n leader_p = self.find(p)\n leader_q = self.find(q)\n self.parent[leader_p] = leader_q\n self.cnt -= 1\n def connected(self, p, q):\n return self.find(p) == self.find(q)\n\nclass Solution:\n def solve(self, A, B, C):\n n = len(A)\n uf = UF(n)\n for fr, to in C:\n print(fr, to)\n uf.union(fr, to)\n group = collections.defaultdict(list)\n\n for i in uf.parent:\n group[uf.find(i)].append(i)\n ans = 0\n for i in group:\n indices = group[i]\n values = collections.Counter([A[i] for i in indices])\n for i in indices:\n if values[B[i]] > 0:\n values[B[i]] -= 1\n ans += 1\n return ans\n\n"
13841+
}
13842+
]
13843+
},
1375113844
"md":{
1375213845
"id": "Minimum-Dropping-Path-Sum",
1375313846
"name": "md",

‎src/submission/hideFailCases.js

+22-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
let showFailCases = null
2+
33
function hideFailCases() {
44
const submissionDOM = document.querySelector("div[data-key=submissions-content]")
55
const submmisionTabVisible = submissionDOM?.children.length > 0;
@@ -16,30 +16,32 @@ function hideFailCases() {
1616
input.style.display = "none"
1717
output.style.display = "none"
1818
expect.style.display = "none"
19-
if (showFailCases === null) {
20-
showFailCases = document.createElement("div");
21-
}
22-
const showFailCasesTip = document.createElement("span")
23-
showFailCasesTip.innerText = "请先尝试自己解决,如果实在无法解决再尝试显示失败的测试用例!";
24-
showFailCasesTip.style["margin-right"] = "20px";
25-
showFailCasesTip.style["line-height"] = "32px";
2619

27-
const showFailCasesButton = document.createElement("a")
28-
showFailCasesButton.innerText = "点击显示失败的测试用例"
29-
showFailCasesButton.style["margin-right"] = "20px";
30-
showFailCasesButton.style["line-height"] = "32px";
3120

32-
showFailCasesButton.onclick = () => {
33-
input.style.display = "block"
34-
output.style.display = "block"
35-
expect.style.display = "block"
21+
if (!document.querySelector('#leetcode-cheat-show-fail-cases')) {
22+
const showFailCases = document.createElement("div");
23+
showFailCases.id = "leetcode-cheat-show-fail-cases";
24+
const showFailCasesTip = document.createElement("span")
25+
showFailCasesTip.innerText = "请先尝试自己解决,如果实在无法解决再尝试显示失败的测试用例!";
26+
showFailCasesTip.style["margin-right"] = "20px";
27+
showFailCasesTip.style["line-height"] = "32px";
3628

37-
};
29+
const showFailCasesButton = document.createElement("a")
30+
showFailCasesButton.innerText = "点击显示失败的测试用例"
31+
showFailCasesButton.style["margin-right"] = "20px";
32+
showFailCasesButton.style["line-height"] = "32px";
3833

39-
showFailCases.appendChild(showFailCasesTip);
40-
showFailCases.appendChild(showFailCasesButton);
34+
showFailCasesButton.onclick = () => {
35+
input.style.display = "block"
36+
output.style.display = "block"
37+
expect.style.display = "block"
4138

42-
submissionDOM.children[0].children[0].children[0].children[0].insertBefore(showFailCases, input)
39+
};
40+
41+
showFailCases.appendChild(showFailCasesTip);
42+
showFailCases.appendChild(showFailCasesButton);
43+
submissionDOM.children[0].children[0].children[0].children[0].insertBefore(showFailCases, input)
44+
}
4345
return true
4446
}
4547
return false

0 commit comments

Comments
 (0)