From 73a40f2ecdbdc28db2ced252e0252e0dc9683852 Mon Sep 17 00:00:00 2001 From: NoyeArk Date: Tue, 28 Jan 2025 09:08:31 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-28=E6=89=93=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3\347\232\204\351\241\276\345\256\242.sql" | 13 ++++++ ...350\276\211\344\270\211\350\247\222 II.md" | 34 +++++++++++++++ ...345\256\266\345\212\253\350\210\215 II.md" | 43 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 "leetcode/10-\351\253\230\351\242\221 SQL 50 \351\242\230\357\274\210\345\237\272\347\241\200\347\211\210\357\274\211/2-\350\277\236\346\216\245/1581. \350\277\233\345\272\227\345\215\264\346\234\252\350\277\233\350\241\214\350\277\207\344\272\244\346\230\223\347\232\204\351\241\276\345\256\242.sql" create mode 100644 "leetcode/4-\346\257\217\346\227\245\344\270\200\351\242\230/119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" create mode 100644 "leetcode/8-119\347\273\217\345\205\270\351\242\230\345\217\230\347\247\215\346\214\221\346\210\230/\346\214\221\346\210\230 14\357\274\232\345\212\250\346\200\201\350\247\204\345\210\222/LCR 090. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" diff --git "a/leetcode/10-\351\253\230\351\242\221 SQL 50 \351\242\230\357\274\210\345\237\272\347\241\200\347\211\210\357\274\211/2-\350\277\236\346\216\245/1581. \350\277\233\345\272\227\345\215\264\346\234\252\350\277\233\350\241\214\350\277\207\344\272\244\346\230\223\347\232\204\351\241\276\345\256\242.sql" "b/leetcode/10-\351\253\230\351\242\221 SQL 50 \351\242\230\357\274\210\345\237\272\347\241\200\347\211\210\357\274\211/2-\350\277\236\346\216\245/1581. \350\277\233\345\272\227\345\215\264\346\234\252\350\277\233\350\241\214\350\277\207\344\272\244\346\230\223\347\232\204\351\241\276\345\256\242.sql" new file mode 100644 index 0000000..5761001 --- /dev/null +++ "b/leetcode/10-\351\253\230\351\242\221 SQL 50 \351\242\230\357\274\210\345\237\272\347\241\200\347\211\210\357\274\211/2-\350\277\236\346\216\245/1581. \350\277\233\345\272\227\345\215\264\346\234\252\350\277\233\350\241\214\350\277\207\344\272\244\346\230\223\347\232\204\351\241\276\345\256\242.sql" @@ -0,0 +1,13 @@ +SELECT + customer_id, + COUNT(*) count_no_trans +FROM + Visits v +LEFT JOIN + Transactions t +ON + v.visit_id = t.visit_id +WHERE + transaction_id IS NULL +GROUP BY + customer_id \ No newline at end of file diff --git "a/leetcode/4-\346\257\217\346\227\245\344\270\200\351\242\230/119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" "b/leetcode/4-\346\257\217\346\227\245\344\270\200\351\242\230/119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" new file mode 100644 index 0000000..b4214d1 --- /dev/null +++ "b/leetcode/4-\346\257\217\346\227\245\344\270\200\351\242\230/119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" @@ -0,0 +1,34 @@ +# [119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/description/) + +> **日期**:2025-01-28 +> **所用时间**:11min + +## 1. 简单模拟 + +杨辉三角的第 $k$ 行可以通过简单模拟来得到。我们可以用一个二维数组 $f$ 来存储杨辉三角,其中 $f[i][j]$ 表示第 $i$ 行第 $j$ 个数。 + +为了方便处理边界情况,我们可以在每一行的首尾各加一个 0。这样第 $i$ 行就需要 $i+2$ 个数。 + +对于每个位置 $f[i][j]$,它等于上一行的相邻两个数之和,即: + +$$ + f[i][j] = f[i-1][j-1] + f[i-1][j] +$$ + +最后返回去掉首尾 0 的结果即可。 + +- 时间复杂度: $O(n^2)$ +- 空间复杂度: $O(n^2)$ + +**Python3** + +```python +class Solution: + def getRow(self, rowIndex: int) -> List[int]: + f = [[0] * (i + 2) for i in range(1, rowIndex + 2)] + f[0][1] = 1 + for i in range(1, rowIndex + 1): + for j in range(1, i + 2): + f[i][j] = f[i - 1][j - 1] + f[i - 1][j] + return f[rowIndex][1:-1] +``` \ No newline at end of file diff --git "a/leetcode/8-119\347\273\217\345\205\270\351\242\230\345\217\230\347\247\215\346\214\221\346\210\230/\346\214\221\346\210\230 14\357\274\232\345\212\250\346\200\201\350\247\204\345\210\222/LCR 090. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" "b/leetcode/8-119\347\273\217\345\205\270\351\242\230\345\217\230\347\247\215\346\214\221\346\210\230/\346\214\221\346\210\230 14\357\274\232\345\212\250\346\200\201\350\247\204\345\210\222/LCR 090. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" new file mode 100644 index 0000000..771962b --- /dev/null +++ "b/leetcode/8-119\347\273\217\345\205\270\351\242\230\345\217\230\347\247\215\346\214\221\346\210\230/\346\214\221\346\210\230 14\357\274\232\345\212\250\346\200\201\350\247\204\345\210\222/LCR 090. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" @@ -0,0 +1,43 @@ +# [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/description/) + +> **日期**:2025-01-28 +> **所用时间**:7min + +## 1. 动态规划 + +### 状态表示 + +- $f[i][0]$ 表示不偷第 $1$ 个房子时,前 $i$ 个房子能偷到的最大金额 +- $f[i][1]$ 表示偷第 $1$ 个房子时,前 $i$ 个房子能偷到的最大金额 + +### 状态转移 + +- 不偷第 $1$ 个房子时,前 $i$ 个房子能偷到的最大金额等于前 $i-1$ 个房子不偷第 $1$ 个房子时能偷到的最大金额和前 $i-2$ 个房子不偷第 $1$ 个房子时能偷到的最大金额加上第 $i$ 个房子的金额中的最大值 +- 偷第 $1$ 个房子时,前 $i$ 个房子能偷到的最大金额等于前 $i-1$ 个房子偷第 $1$ 个房子时能偷到的最大金额和前 $i-2$ 个房子偷第 $1$ 个房子时能偷到的最大金额加上第 $i$ 个房子的金额中的最大值 + +$$ +f[i][0] = \max(f[i-1][0], f[i-2][0] + nums[i]) +$$ + +$$ +f[i][1] = \max(f[i-1][1], f[i-2][1] + nums[i]) +$$ + +- 时间复杂度: $O(n)$ +- 空间复杂度: $O(n)$ + +**Python3** + +```python +class Solution: + def rob(self, nums: List[int]) -> int: + if len(nums) == 1: + return nums[0] + + f = [[0, 0] for i in range(len(nums))] + f[0] = [0, nums[0]] + for i in range(1, len(nums)): + f[i][0] = max(f[i - 1][0], f[i - 2][0] + nums[i]) + f[i][1] = max(f[i - 1][1], f[i - 2][1] + nums[i]) + return max(f[-1][0], f[-2][1]) +``` \ No newline at end of file