mirror of
https://github.com/deepseek-ai/DeepSeek-Coder.git
synced 2025-02-23 06:09:07 -05:00
181 lines
2.9 MiB
Plaintext
181 lines
2.9 MiB
Plaintext
|
{"task_id": "weekly-contest-381-minimum-number-of-pushes-to-type-word-i", "url": "https://leetcode.com/problems/minimum-number-of-pushes-to-type-word-i", "title": "minimum-number-of-pushes-to-type-word-i", "meta": {"questionId": "3275", "questionFrontendId": "3014", "title": "Minimum Number of Pushes to Type Word I", "titleSlug": "minimum-number-of-pushes-to-type-word-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 39, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 word,由 不同 小写英文字母组成。\n电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 [\"a\",\"b\",\"c\"],我们需要按一次键来输入 \"a\",按两次键来输入 \"b\",按三次键来输入 \"c\"。\n现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。\n返回重新映射按键后输入 word 所需的 最少 按键次数。\n下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1,*,# 和 0 不 对应任何字母。\n\n\n示例 1:\n\n\n输入:word = \"abcde\"\n输出:5\n解释:图片中给出的重新映射方案的输入成本最小。\n\"a\" -> 在按键 2 上按一次\n\"b\" -> 在按键 3 上按一次\n\"c\" -> 在按键 4 上按一次\n\"d\" -> 在按键 5 上按一次\n\"e\" -> 在按键 6 上按一次\n总成本为 1 + 1 + 1 + 1 + 1 = 5 。\n可以证明不存在其他成本更低的映射方案。\n\n示例 2:\n\n\n输入:word = \"xycdefghij\"\n输出:12\n解释:图片中给出的重新映射方案的输入成本最小。\n\"x\" -> 在按键 2 上按一次\n\"y\" -> 在按键 2 上按两次\n\"c\" -> 在按键 3 上按一次\n\"d\" -> 在按键 3 上按两次\n\"e\" -> 在按键 4 上按一次\n\"f\" -> 在按键 5 上按一次\n\"g\" -> 在按键 6 上按一次\n\"h\" -> 在按键 7 上按一次\n\"i\" -> 在按键 8 上按一次\n\"j\" -> 在按键 9 上按一次\n总成本为 1 + 2 + 1 + 2 + 1 + 1 + 1 + 1 + 1 + 1 = 12 。\n可以证明不存在其他成本更低的映射方案。\n\n\n提示:\n\n1 <= word.length <= 26\nword 仅由小写英文字母组成。\nword 中的所有字母互不相同。\n\"\"\"\nclass Solution:\n def minimumPushes(self, word: str) -> int:\n ", "prompt_sft": "给你一个字符串 word,由 不同 小写英文字母组成。\n电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 [\"a\",\"b\",\"c\"],我们需要按一次键来输入 \"a\",按两次键来输入 \"b\",按三次键来输入 \"c\"。\n现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。\n返回重新映射按键后输入 word 所需的 最少 按键次数。\n下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1,*,# 和 0 不 对应任何字母。\n\n\n示例 1:\n\n\n输入:word = \"abcde\"\n输出:5\n解释:图片中给出的重新映射方案的输入成本最小。\n\"a\" -> 在按键 2 上按一次\n\"b\" -> 在按键 3 上按一次\n\"c\" -> 在按键 4 上按一次\n\"d\" -> 在按键 5 上按一次\n\"e\" -> 在按键 6 上按一次\n总成本为 1 + 1 + 1 + 1 + 1 = 5 。\n可以证明不存在其他成本更低的映射方案。\n\n示例 2:\n\n\n输入:word = \"xycdefghij\"\n输出:12\n解释:图片中给出的重新映射方案的输入成本最小。\n\"x\" -> 在按键 2 上按一次\n\"y\" -> 在按键 2 上按两次\n\"c\" -> 在按键 3 上按一次\n\"d\" -> 在按键 3 上按两次\n\"e\" -> 在按键 4 上按一次\n\"f\" -> 在按键 5 上按一次\n\"g\" -> 在按键 6 上<><E4B88A>
|
|||
|
{"task_id": "weekly-contest-381-count-the-number-of-houses-at-a-certain-distance-i", "url": "https://leetcode.com/problems/count-the-number-of-houses-at-a-certain-distance-i", "title": "count-the-number-of-houses-at-a-certain-distance-i", "meta": {"questionId": "3271", "questionFrontendId": "3015", "title": "Count the Number of Houses at a Certain Distance I", "titleSlug": "count-the-number-of-houses-at-a-certain-distance-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 62, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个 正整数 n 、x 和 y 。\n在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。\n对于每个 k(1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。\n返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。\n注意,x 与 y 可以 相等 。\n\n示例 1:\n\n\n输入:n = 3, x = 1, y = 3\n输出:[6,0,0]\n解释:让我们检视每个房屋对\n- 对于房屋对 (1, 2),可以直接从房屋 1 到房屋 2。\n- 对于房屋对 (2, 1),可以直接从房屋 2 到房屋 1。\n- 对于房屋对 (1, 3),可以直接从房屋 1 到房屋 3。\n- 对于房屋对 (3, 1),可以直接从房屋 3 到房屋 1。\n- 对于房屋对 (2, 3),可以直接从房屋 2 到房屋 3。\n- 对于房屋对 (3, 2),可以直接从房屋 3 到房屋 2。\n\n示例 2:\n\n\n输入:n = 5, x = 2, y = 4\n输出:[10,8,2,0,0]\n解释:对于每个距离 k ,满足要求的房屋对如下:\n- 对于 k == 1,满足要求的房屋对有 (1, 2), (2, 1), (2, 3), (3, 2), (2, 4), (4, 2), (3, 4), (4, 3), (4, 5), 以及 (5, 4)。\n- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (1, 4), (4, 1), (2, 5), (5, 2), (3, 5), 以及 (5, 3)。\n- 对于 k == 3,满足要求的房屋对有 (1, 5),以及 (5, 1) 。\n- 对于 k == 4 和 k == 5,不存在满足要求的房屋对。\n\n示例 3:\n\n\n输入:n = 4, x = 1, y = 1\n输出:[6,4,2,0]\n解释:对于每个距离 k ,满足要求的房屋对如下:\n- 对于 k == 1,满足要求的房屋对有 (1, 2), (2, 1), (2, 3), (3, 2), (3, 4), 以及 (4, 3)。\n- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (2, 4), 以及 (4, 2)。\n- 对于 k == 3,满足要求的房屋对有 (1, 4), 以及 (4, 1)。\n- 对于 k == 4,不存在满足要求的房屋对。\n\n\n提示:\n\n2 <= n <= 100\n1 <= x, y <= n\n\"\"\"\nclass Solution:\n def countOfPairs(self, n: int, x: int, y: int) -> List[int]:\n ", "prompt_sft": "给你三个 正整数 n 、x 和 y 。\n在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。\n对于每个 k(1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。\n返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。\n注意,x 与 y 可以 相等 。\n\n示例 1:\n\n\n输入:n = 3, x = 1, y = 3\n输出:[6,0,0]\n解释:让我们检视每个房屋对\n- 对于房屋对 (1, 2),可以直接从房屋 1 到房屋 2。\n- 对于房屋对 (2, 1),可以直接从房屋 2 到房屋 1。\n- 对于房屋对 (1, 3),可以直接从房屋 1 到房屋 3。\n- 对于房屋对 (3, 1),可以直接从房屋 3 到房屋 1。\n- 对于房屋对 (2, 3),可以直接从房屋 2 到房屋 3。\n- 对于<E5AFB9>
|
|||
|
{"task_id": "weekly-contest-381-minimum-number-of-pushes-to-type-word-ii", "url": "https://leetcode.com/problems/minimum-number-of-pushes-to-type-word-ii", "title": "minimum-number-of-pushes-to-type-word-ii", "meta": {"questionId": "3276", "questionFrontendId": "3016", "title": "Minimum Number of Pushes to Type Word II", "titleSlug": "minimum-number-of-pushes-to-type-word-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 59, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 word,由 不同 小写英文字母组成。\n电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 [\"a\",\"b\",\"c\"],我们需要按一次键来输入 \"a\",按两次键来输入 \"b\",按三次键来输入 \"c\"。\n现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。\n返回重新映射按键后输入 word 所需的 最少 按键次数。\n下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1,*,# 和 0 不 对应任何字母。\n\n\n示例 1:\n\n\n输入:word = \"abcde\"\n输出:5\n解释:图片中给出的重新映射方案的输入成本最小。\n\"a\" -> 在按键 2 上按一次\n\"b\" -> 在按键 3 上按一次\n\"c\" -> 在按键 4 上按一次\n\"d\" -> 在按键 5 上按一次\n\"e\" -> 在按键 6 上按一次\n总成本为 1 + 1 + 1 + 1 + 1 = 5 。\n可以证明不存在其他成本更低的映射方案。\n\n示例 2:\n\n\n输入:word = \"xyzxyzxyzxyz\"\n输出:12\n解释:图片中给出的重新映射方案的输入成本最小。\n\"x\" -> 在按键 2 上按一次\n\"y\" -> 在按键 3 上按一次\n\"z\" -> 在按键 4 上按一次\n总成本为 1 * 4 + 1 * 4 + 1 * 4 = 12 。\n可以证明不存在其他成本更低的映射方案。\n注意按键 9 没有映射到任何字母:不必让每个按键都存在与之映射的字母,但是每个字母都必须映射到按键上。\n\n示例 3:\n\n\n输入:word = \"aabbccddeeffgghhiiiiii\"\n输出:24\n解释:图片中给出的重新映射方案的输入成本最小。\n\"a\" -> 在按键 2 上按一次\n\"b\" -> 在按键 3 上按一次\n\"c\" -> 在按键 4 上按一次\n\"d\" -> 在按键 5 上按一次\n\"e\" -> 在按键 6 上按一次\n\"f\" -> 在按键 7 上按一次\n\"g\" -> 在按键 8 上按一次\n\"h\" -> 在按键 9 上按两次\n\"i\" -> 在按键 9 上按一次\n总成本为 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 2 * 2 + 6 * 1 = 24 。\n可以证明不存在其他成本更低的映射方案。\n\n\n提示:\n\n1 <= word.length <= 105\nword 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def minimumPushes(self, word: str) -> int:\n ", "prompt_sft": "给你一个字符串 word,由 不同 小写英文字母组成。\n电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 [\"a\",\"b\",\"c\"],我们需要按一次键来输入 \"a\",按两次键来输入 \"b\",按三次键来输入 \"c\"。\n现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。\n返回重新映射按键后输入 word 所需的 最少 按键次数。\n下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1,*,# 和 0 不 对应任何字母。\n\n\n示例 1:\n\n\n输入:word = \"abcde\"\n输出:5\n解释:图片中给出的重新映射方案的输入成本最小。\n\"a\" -> 在按键 2 上按一次\n\"b\" -> 在按键 3 上按一次\n\"c\" -> 在按键 4 上按一次\n\"d\" -> 在按键 5 上按一次\n\"e\" -> 在按键 6 上按一次
|
|||
|
{"task_id": "weekly-contest-381-count-the-number-of-houses-at-a-certain-distance-ii", "url": "https://leetcode.com/problems/count-the-number-of-houses-at-a-certain-distance-ii", "title": "count-the-number-of-houses-at-a-certain-distance-ii", "meta": {"questionId": "3310", "questionFrontendId": "3017", "title": "Count the Number of Houses at a Certain Distance II", "titleSlug": "count-the-number-of-houses-at-a-certain-distance-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 27, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个 正整数 n 、x 和 y 。\n在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。\n对于每个 k(1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。\n返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。\n注意,x 与 y 可以 相等 。\n\n示例 1:\n\n\n输入:n = 3, x = 1, y = 3\n输出:[6,0,0]\n解释:让我们检视每个房屋对\n- 对于房屋对 (1, 2),可以直接从房屋 1 到房屋 2。\n- 对于房屋对 (2, 1),可以直接从房屋 2 到房屋 1。\n- 对于房屋对 (1, 3),可以直接从房屋 1 到房屋 3。\n- 对于房屋对 (3, 1),可以直接从房屋 3 到房屋 1。\n- 对于房屋对 (2, 3),可以直接从房屋 2 到房屋 3。\n- 对于房屋对 (3, 2),可以直接从房屋 3 到房屋 2。\n\n示例 2:\n\n\n输入:n = 5, x = 2, y = 4\n输出:[10,8,2,0,0]\n解释:对于每个距离 k ,满足要求的房屋对如下:\n- 对于 k == 1,满足要求的房屋对有 (1, 2), (2, 1), (2, 3), (3, 2), (2, 4), (4, 2), (3, 4), (4, 3), (4, 5), 以及 (5, 4)。\n- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (1, 4), (4, 1), (2, 5), (5, 2), (3, 5), 以及 (5, 3)。\n- 对于 k == 3,满足要求的房屋对有 (1, 5),以及 (5, 1) 。\n- 对于 k == 4 和 k == 5,不存在满足要求的房屋对。\n\n示例 3:\n\n\n输入:n = 4, x = 1, y = 1\n输出:[6,4,2,0]\n解释:对于每个距离 k ,满足要求的房屋对如下:\n- 对于 k == 1,满足要求的房屋对有 (1, 2), (2, 1), (2, 3), (3, 2), (3, 4), 以及 (4, 3)。\n- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (2, 4), 以及 (4, 2)。\n- 对于 k == 3,满足要求的房屋对有 (1, 4), 以及 (4, 1)。\n- 对于 k == 4,不存在满足要求的房屋对。\n\n\n提示:\n\n2 <= n <= 105\n1 <= x, y <= n\n\"\"\"\nclass Solution:\n def countOfPairs(self, n: int, x: int, y: int) -> List[int]:\n ", "prompt_sft": "给你三个 正整数 n 、x 和 y 。\n在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。\n对于每个 k(1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。\n返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。\n注意,x 与 y 可以 相等 。\n\n示例 1:\n\n\n输入:n = 3, x = 1, y = 3\n输出:[6,0,0]\n解释:让我们检视每个房屋对\n- 对于房屋对 (1, 2),可以直接从房屋 1 到房屋 2。\n- 对于房屋对 (2, 1),可以直接从房屋 2 到房屋 1。\n- 对于房屋对 (1, 3),可以直接从房屋 1 到房屋 3。\n- 对于房屋对 (3, 1),可以直接从房屋 3 到房屋 1。\n- 对于房屋对 (2, 3),可以直接从房屋 2 到房屋 3。\n- 对
|
|||
|
{"task_id": "biweekly-contest-122-divide-an-array-into-subarrays-with-minimum-cost-i", "url": "https://leetcode.com/problems/divide-an-array-into-subarrays-with-minimum-cost-i", "title": "divide-an-array-into-subarrays-with-minimum-cost-i", "meta": {"questionId": "3263", "questionFrontendId": "3010", "title": "Divide an Array Into Subarrays With Minimum Cost I", "titleSlug": "divide-an-array-into-subarrays-with-minimum-cost-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 40, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n的整数数组nums。\n一个数组的 代价是它的 第一个元素。比方说,[1,2,3]的代价是1,[3,4,1]的代价是3。\n你需要将nums分成3个连续且没有交集的子数组。\n请你返回这些子数组的 最小代价总和。\n\n示例 1:\n\n输入:nums = [1,2,3,12]\n输出:6\n解释:最佳分割成 3 个子数组的方案是:[1] ,[2] 和 [3,12] ,总代价为 1 + 2 + 3 = 6 。\n其他得到 3 个子数组的方案是:\n- [1] ,[2,3] 和 [12] ,总代价是 1 + 2 + 12 = 15 。\n- [1,2] ,[3] 和 [12] ,总代价是 1 + 3 + 12 = 16 。\n\n示例 2:\n\n输入:nums = [5,4,3]\n输出:12\n解释:最佳分割成 3 个子数组的方案是:[5] ,[4] 和 [3] ,总代价为 5 + 4 + 3 = 12 。\n12 是所有分割方案里的最小总代价。\n\n示例 3:\n\n输入:nums = [10,3,1,1]\n输出:12\n解释:最佳分割成 3 个子数组的方案是:[10,3] ,[1] 和 [1] ,总代价为 10 + 1 + 1 = 12 。\n12 是所有分割方案里的最小总代价。\n\n\n提示:\n\n3 <= n <= 50\n1 <= nums[i] <= 50\n\"\"\"\nclass Solution:\n def minimumCost(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n的整数数组nums。\n一个数组的 代价是它的 第一个元素。比方说,[1,2,3]的代价是1,[3,4,1]的代价是3。\n你需要将nums分成3个连续且没有交集的子数组。\n请你返回这些子数组的 最小代价总和。\n\n示例 1:\n\n输入:nums = [1,2,3,12]\n输出:6\n解释:最佳分割成 3 个子数组的方案是:[1] ,[2] 和 [3,12] ,总代价为 1 + 2 + 3 = 6 。\n其他得到 3 个子数组的方案是:\n- [1] ,[2,3] 和 [12] ,总代价是 1 + 2 + 12 = 15 。\n- [1,2] ,[3] 和 [12] ,总代价是 1 + 3 + 12 = 16 。\n\n示例 2:\n\n输入:nums = [5,4,3]\n输出:12\n解释:最佳分割成 3 个子数组的方案是:[5] ,[4] 和 [3] ,总代价为 5 + 4 + 3 = 12 。\n12 是所有分割方案里的最小总代价。\n\n示例 3:\n\n输入:nums = [10,3,1,1]\n输出:12\n解释:最佳分割成 3 个子数组的方案是:[10,3] ,[1] 和 [1] ,总代价为 10 + 1 + 1 = 12 。\n12 是所有分割方案里的最小总代价。\n\n\n提示:\n\n3 <= n <= 50\n1 <= nums[i] <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumCost(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,12] }\nassert my_solution.minimumCost(**test_input) == 6\n\ntest_input = { \"nums\": [5,4,3] }\nassert my_solution.minimumCost(**test_input) == 12\n\ntest_input = { \"nums\": [10,3,1,1] }\nassert my_solution.minimumCost(**test_input) == 12\n\ntest_input = { \"nums\": [1,1,1] }\nassert my_solution.minimumCost(**test_input) == 3\n\ntest_input = { \"nums\": [1,1,2] }\nassert my_solution.minimumCost(**test_input) == 4\n\ntest_input = { \"nums\": [1,1,3] }\nassert my_solution.minimumCost(**test_input) == 5\n\ntest_input = { \"nums\": [1,1,4] }\nassert my_solution.minimumCost(**test_input) == 6\n\ntest_input = { \"nums\": [1,1,5] }\nassert my_solution.minimumCost(**test_input) == 7\n\ntest_input = { \"nums\": [1,2,1] }\nassert my_solution.minimumCost(**test_input) == 4\n\ntest_input = { \"nums\": [1,2,2] }\nassert my_solution.minimumCost(**test_input) == 5\n\ntest_input = { \"nums\": [1,2,3] }\nassert my_solution.minimumCost(**test_input) == 6\n\ntest_input = { \"nums\": [1,2,4] }\nassert my_solution.minimumCost(**test_
|
|||
|
{"task_id": "biweekly-contest-122-find-if-array-can-be-sorted", "url": "https://leetcode.com/problems/find-if-array-can-be-sorted", "title": "find-if-array-can-be-sorted", "meta": {"questionId": "3291", "questionFrontendId": "3011", "title": "Find if Array Can Be Sorted", "titleSlug": "find-if-array-can-be-sorted", "isPaidOnly": false, "difficulty": "Medium", "likes": 52, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始且全是 正整数的数组nums。\n一次 操作中,如果两个 相邻元素在二进制下数位为 1的数目 相同,那么你可以将这两个元素交换。你可以执行这个操作 任意次(也可以 0 次)。\n如果你可以使数组变有序,请你返回true ,否则返回false。\n\n示例 1:\n\n输入:nums = [8,4,2,30,15]\n输出:true\n解释:我们先观察每个元素的二进制表示。 2 ,4 和 8 分别都只有一个数位为 1 ,分别为 \"10\" ,\"100\" 和 \"1000\" 。15 和 30 分别有 4 个数位为 1 :\"1111\" 和 \"11110\" 。\n我们可以通过 4 个操作使数组有序:\n- 交换 nums[0] 和 nums[1] 。8 和 4 分别只有 1 个数位为 1 。数组变为 [4,8,2,30,15] 。\n- 交换 nums[1] 和 nums[2] 。8 和 2 分别只有 1 个数位为 1 。数组变为 [4,2,8,30,15] 。\n- 交换 nums[0] 和 nums[1] 。4 和 2 分别只有 1 个数位为 1 。数组变为 [2,4,8,30,15] 。\n- 交换 nums[3] 和 nums[4] 。30 和 15 分别有 4 个数位为 1 ,数组变为 [2,4,8,15,30] 。\n数组变成有序的,所以我们返回 true 。\n注意我们还可以通过其他的操作序列使数组变得有序。\n\n示例 2:\n\n输入:nums = [1,2,3,4,5]\n输出:true\n解释:数组已经是有序的,所以我们返回 true 。\n\n示例 3:\n\n输入:nums = [3,16,8,4,2]\n输出:false\n解释:无法通过操作使数组变为有序。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 28\n\"\"\"\nclass Solution:\n def canSortArray(self, nums: List[int]) -> bool:\n ", "prompt_sft": "给你一个下标从 0开始且全是 正整数的数组nums。\n一次 操作中,如果两个 相邻元素在二进制下数位为 1的数目 相同,那么你可以将这两个元素交换。你可以执行这个操作 任意次(也可以 0 次)。\n如果你可以使数组变有序,请你返回true ,否则返回false。\n\n示例 1:\n\n输入:nums = [8,4,2,30,15]\n输出:true\n解释:我们先观察每个元素的二进制表示。 2 ,4 和 8 分别都只有一个数位为 1 ,分别为 \"10\" ,\"100\" 和 \"1000\" 。15 和 30 分别有 4 个数位为 1 :\"1111\" 和 \"11110\" 。\n我们可以通过 4 个操作使数组有序:\n- 交换 nums[0] 和 nums[1] 。8 和 4 分别只有 1 个数位为 1 。数组变为 [4,8,2,30,15] 。\n- 交换 nums[1] 和 nums[2] 。8 和 2 分别只有 1 个数位为 1 。数组变为 [4,2,8,30,15] 。\n- 交换 nums[0] 和 nums[1] 。4 和 2 分别只有 1 个数位为 1 。数组变为 [2,4,8,30,15] 。\n- 交换 nums[3] 和 nums[4] 。30 和 15 分别有 4 个数位为 1 ,数组变为 [2,4,8,15,30] 。\n数组变成有序的,所以我们返回 true 。\n注意我们还可以通过其他的操作序列使数组变得有序。\n\n示例 2:\n\n输入:nums = [1,2,3,4,5]\n输出:true\n解释:数组已经是有序的,所以我们返回 true 。\n\n示例 3:\n\n输入:nums = [3,16,8,4,2]\n输出:false\n解释:无法通过操作使数组变为有序。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 28\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def canSortArray(self, nums: List[int]) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [8,4,2,30,15] }\nassert my_solution.canSortArray(**test_input) == True\n\ntest_input = { \"nums\": [1,2,3,4,5] }\nassert my_solution.canSortArray(**test_input) == True\n\ntest_input = { \"nums\": [1] }\nassert my_solution.canSortArray(**test_input) == True\n\ntest_input = { \"nums\": [4] }\nass
|
|||
|
{"task_id": "biweekly-contest-122-minimize-length-of-array-using-operations", "url": "https://leetcode.com/problems/minimize-length-of-array-using-operations", "title": "minimize-length-of-array-using-operations", "meta": {"questionId": "3244", "questionFrontendId": "3012", "title": "Minimize Length of Array Using Operations", "titleSlug": "minimize-length-of-array-using-operations", "isPaidOnly": false, "difficulty": "Medium", "likes": 79, "dislikes": 30, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的整数数组nums,它只包含 正整数。\n你的任务是通过进行以下操作任意次(可以是 0 次)最小化nums的长度:\n\n在 nums中选择 两个不同的下标i和j,满足nums[i] > 0且nums[j] > 0。\n将结果nums[i] % nums[j]插入nums的结尾。\n将 nums中下标为i和j的元素删除。\n\n请你返回一个整数,它表示进行任意次操作以后nums的 最小长度。\n\n示例 1:\n\n输入:nums = [1,4,3,1]\n输出:1\n解释:使数组长度最小的一种方法是:\n操作 1 :选择下标 2 和 1 ,插入 nums[2] % nums[1] 到数组末尾,得到 [1,4,3,1,3] ,然后删除下标为 2 和 1 的元素。\nnums 变为 [1,1,3] 。\n操作 2 :选择下标 1 和 2 ,插入 nums[1] % nums[2] 到数组末尾,得到 [1,1,3,1] ,然后删除下标为 1 和 2 的元素。\nnums 变为 [1,1] 。\n操作 3 :选择下标 1 和 0 ,插入 nums[1] % nums[0] 到数组末尾,得到 [1,1,0] ,然后删除下标为 1 和 0 的元素。\nnums 变为 [0] 。\nnums 的长度无法进一步减小,所以答案为 1 。\n1 是可以得到的最小长度。\n示例 2:\n\n输入:nums = [5,5,5,10,5]\n输出:2\n解释:使数组长度最小的一种方法是:\n操作 1 :选择下标 0 和 3 ,插入 nums[0] % nums[3] 到数组末尾,得到 [5,5,5,10,5,5] ,然后删除下标为 0 和 3 的元素。\nnums 变为 [5,5,5,5] 。\n操作 2 :选择下标 2 和 3 ,插入 nums[2] % nums[3] 到数组末尾,得到 [5,5,5,5,0] ,然后删除下标为 2 和 3 的元素。\nnums 变为 [5,5,0] 。\n操作 3 :选择下标 0 和 1 ,插入 nums[0] % nums[1] 到数组末尾,得到 [5,5,0,0] ,然后删除下标为 0 和 1 的元素。\nnums 变为 [0,0] 。\nnums 的长度无法进一步减小,所以答案为 2 。\n2 是可以得到的最小长度。\n示例 3:\n\n输入:nums = [2,3,4]\n输出:1\n解释:使数组长度最小的一种方法是:\n操作 1 :选择下标 1 和 2 ,插入 nums[1] % nums[2] 到数组末尾,得到 [2,3,4,3] ,然后删除下标为 1 和 2 的元素。\nnums 变为 [2,3] 。\n操作 2 :选择下标 1 和 0 ,插入 nums[1] % nums[0] 到数组末尾,得到 [2,3,1] ,然后删除下标为 1 和 0 的元素。\nnums 变为 [1] 。\nnums 的长度无法进一步减小,所以答案为 1 。\n1 是可以得到的最小长度。\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def minimumArrayLength(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的整数数组nums,它只包含 正整数。\n你的任务是通过进行以下操作任意次(可以是 0 次)最小化nums的长度:\n\n在 nums中选择 两个不同的下标i和j,满足nums[i] > 0且nums[j] > 0。\n将结果nums[i] % nums[j]插入nums的结尾。\n将 nums中下标为i和j的元素删除。\n\n请你返回一个整数,它表示进行任意次操作以后nums的 最小长度。\n\n示例 1:\n\n输入:nums = [1,4,3,1]\n输出:1\n解释:使数组长度最小的一种方法是:\n操作 1 :选择下标 2 和 1 ,插入 nums[2] % nums[1] 到数组末尾,得到 [1,4,3,1,3] ,然后删除下标为 2 和 1 的元素。\nnums 变为 [1,1,3] 。\n操作 2 :选择下标 1 和 2 ,插入 nums[1] % nums[2] 到数组末尾,得到 [1,1,3,1] ,然后删除下标为 1 和 2 的元素。\nnums 变为 [1,1] 。\n操作 3 :选择下标 1 和 0 ,插入 nums[1] % nums[0] 到数组末尾,得到 [1,1,0] ,然后删除下标为 1 和
|
|||
|
{"task_id": "biweekly-contest-122-divide-an-array-into-subarrays-with-minimum-cost-ii", "url": "https://leetcode.com/problems/divide-an-array-into-subarrays-with-minimum-cost-ii", "title": "divide-an-array-into-subarrays-with-minimum-cost-ii", "meta": {"questionId": "3260", "questionFrontendId": "3013", "title": "Divide an Array Into Subarrays With Minimum Cost II", "titleSlug": "divide-an-array-into-subarrays-with-minimum-cost-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 54, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始长度为 n的整数数组nums和两个 正整数k 和dist。\n一个数组的 代价是数组中的 第一个元素。比方说,[1,2,3]的代价为1,[3,4,1]的代价为3。\n你需要将 nums分割成 k个 连续且互不相交的子数组,满足 第二个子数组与第 k个子数组中第一个元素的下标距离 不超过dist。换句话说,如果你将nums分割成子数组nums[0..(i1 - 1)], nums[i1..(i2 - 1)], ..., nums[ik-1..(n - 1)],那么它需要满足ik-1 - i1 <= dist。\n请你返回这些子数组的 最小总代价。\n\n示例 1:\n\n输入:nums = [1,3,2,6,4,2], k = 3, dist = 3\n输出:5\n解释:将数组分割成 3 个子数组的最优方案是:[1,3] ,[2,6,4] 和 [2] 。这是一个合法分割,因为 ik-1 - i1 等于 5 - 2 = 3 ,等于 dist 。总代价为 nums[0] + nums[2] + nums[5] ,也就是 1 + 2 + 2 = 5 。\n5 是分割成 3 个子数组的最小总代价。\n\n示例 2:\n\n输入:nums = [10,1,2,2,2,1], k = 4, dist = 3\n输出:15\n解释:将数组分割成 4 个子数组的最优方案是:[10] ,[1] ,[2] 和 [2,2,1] 。这是一个合法分割,因为 ik-1 - i1 等于 3 - 1 = 2 ,小于 dist 。总代价为 nums[0] + nums[1] + nums[2] + nums[3] ,也就是 10 + 1 + 2 + 2 = 15 。\n分割 [10] ,[1] ,[2,2,2] 和 [1] 不是一个合法分割,因为 ik-1 和 i1 的差为 5 - 1 = 4 ,大于 dist 。\n15 是分割成 4 个子数组的最小总代价。\n\n示例 3:\n\n输入:nums = [10,8,18,9], k = 3, dist = 1\n输出:36\n解释:将数组分割成 4 个子数组的最优方案是:[10] ,[8] 和 [18,9] 。这是一个合法分割,因为 ik-1 - i1 等于 2 - 1 = 1 ,等于 dist 。总代价为 nums[0] + nums[1] + nums[2] ,也就是 10 + 8 + 18 = 36 。\n分割 [10] ,[8,18] 和 [9] 不是一个合法分割,因为 ik-1 和 i1 的差为 3 - 1 = 2 ,大于 dist 。\n36 是分割成 3 个子数组的最小总代价。\n\n\n提示:\n\n3 <= n <= 105\n1 <= nums[i] <= 109\n3 <= k <= n\nk - 2 <= dist <= n - 2\n\"\"\"\nclass Solution:\n def minimumCost(self, nums: List[int], k: int, dist: int) -> int:\n ", "prompt_sft": "给你一个下标从 0开始长度为 n的整数数组nums和两个 正整数k 和dist。\n一个数组的 代价是数组中的 第一个元素。比方说,[1,2,3]的代价为1,[3,4,1]的代价为3。\n你需要将 nums分割成 k个 连续且互不相交的子数组,满足 第二个子数组与第 k个子数组中第一个元素的下标距离 不超过dist。换句话说,如果你将nums分割成子数组nums[0..(i1 - 1)], nums[i1..(i2 - 1)], ..., nums[ik-1..(n - 1)],那么它需要满足ik-1 - i1 <= dist。\n请你返回这些子数组的 最小总代价。\n\n示例 1:\n\n输入:nums = [1,3,2,6,4,2], k = 3, dist = 3\n输出:5\n解释:将数组分割成 3 个子数组的最优方案是:[1,3] ,[2,6,4] 和 [2] 。这是一个合法分割,因为 ik-1 - i1 等于 5 - 2 = 3 ,等于 dist 。总代价为 nums[0] + nums[2] + nums[5] ,也就是 1 + 2 + 2 = 5 。\n5 是分割成 3 个子数组的最小总代价。\n\n示例 2:\n\n输入:nums = [10,1,2,2,2,1], k = 4, dist = 3\n输出:15\n解释:将数组分割成 4 个子数组的最优方案是:[10] ,[1] ,[2] 和 [2,2,1] 。这是一个合法分割,因为 ik-1 - i1 等于 3 - 1 = 2 ,小于 dist 。总代价为 nums[0] + nums[1] + nums[2] + nums[3] ,也就是 10 + 1 + 2 + 2 = 15 。\n分割 [10] ,[1] ,[2,2,2] 和 [1] 不是一个合法分割,<E589B2>
|
|||
|
{"task_id": "weekly-contest-380-count-elements-with-maximum-frequency", "url": "https://leetcode.com/problems/count-elements-with-maximum-frequency", "title": "count-elements-with-maximum-frequency", "meta": {"questionId": "3242", "questionFrontendId": "3005", "title": "Count Elements With Maximum Frequency", "titleSlug": "count-elements-with-maximum-frequency", "isPaidOnly": false, "difficulty": "Easy", "likes": 47, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个由 正整数 组成的数组 nums 。\n返回数组 nums 中所有具有 最大 频率的元素的 总频率 。\n元素的 频率 是指该元素在数组中出现的次数。\n\n示例 1:\n\n输入:nums = [1,2,2,3,1,4]\n输出:4\n解释:元素 1 和 2 的频率为 2 ,是数组中的最大频率。\n因此具有最大频率的元素在数组中的数量是 4 。\n\n示例 2:\n\n输入:nums = [1,2,3,4,5]\n输出:5\n解释:数组中的所有元素的频率都为 1 ,是最大频率。\n因此具有最大频率的元素在数组中的数量是 5 。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 100\n\"\"\"\nclass Solution:\n def maxFrequencyElements(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个由 正整数 组成的数组 nums 。\n返回数组 nums 中所有具有 最大 频率的元素的 总频率 。\n元素的 频率 是指该元素在数组中出现的次数。\n\n示例 1:\n\n输入:nums = [1,2,2,3,1,4]\n输出:4\n解释:元素 1 和 2 的频率为 2 ,是数组中的最大频率。\n因此具有最大频率的元素在数组中的数量是 4 。\n\n示例 2:\n\n输入:nums = [1,2,3,4,5]\n输出:5\n解释:数组中的所有元素的频率都为 1 ,是最大频率。\n因此具有最大频率的元素在数组中的数量是 5 。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxFrequencyElements(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,2,3,1,4] }\nassert my_solution.maxFrequencyElements(**test_input) == 4\n\ntest_input = { \"nums\": [1,2,3,4,5] }\nassert my_solution.maxFrequencyElements(**test_input) == 5\n\ntest_input = { \"nums\": [15] }\nassert my_solution.maxFrequencyElements(**test_input) == 1\n\ntest_input = { \"nums\": [10,12,11,9,6,19,11] }\nassert my_solution.maxFrequencyElements(**test_input) == 2\n\ntest_input = { \"nums\": [2,12,17,18,11] }\nassert my_solution.maxFrequencyElements(**test_input) == 5\n\ntest_input = { \"nums\": [19,19,19,20,19,8,19] }\nassert my_solution.maxFrequencyElements(**test_input) == 5\n\ntest_input = { \"nums\": [1,1,1,1] }\nassert my_solution.maxFrequencyElements(**test_input) == 4\n\ntest_input = { \"nums\": [10,1,12,10,10,19,10] }\nassert my_solution.maxFrequencyElements(**test_input) == 4\n\ntest_input = { \"nums\": [1,1,1,20,6,1] }\nassert my_solution.maxFrequencyElements(**test_input) == 4\n\ntest_input = { \"nums\": [17,17] }\nassert my_solution.maxFrequencyElements(**test_input) == 2\n\ntest_input = { \"nums\": [6,13,15,15,11,6,7,12,4,11] }\nassert my_solution.maxFrequencyElements(**test_input) == 6\n\ntest_input = { \"nums\": [1,2] }\nassert my_solution.maxFrequencyElements(**test_input) == 2\n\ntest_input = { \"nums\": [14,14,17] }\nassert my_solution.maxFrequencyElements(**test_input) == 2\n\ntest_input = { \"nums\": [17,17,2,12,20,17,12] }\nassert my_solution.maxFrequencyElements(**test_input) == 3\n\ntest_input = { \"nums\": [3,9,11,11,20] }\nassert my_solution.maxFrequencyElements(**test_input) == 2\n\ntest_input = { \"nums\": [8,15,8,11,8,13,12,11,8] }\nassert my_solution.maxFrequencyElements(**test_input) == 4\n\ntest_input = { \"nums\": [17,8,17,19,17,13,17,17,17,5] }\nassert my_solution.maxFrequencyElements(**test_input) == 6\n\ntest_input = { \"nums\": [11] }\nassert my_solution.maxFrequencyElements(**test_input) == 1\n\ntest_input = { \"nums\": [5] }\nassert my_solution.maxFrequencyElements(**test_input) == 1\n\
|
|||
|
{"task_id": "weekly-contest-380-find-beautiful-indices-in-the-given-array-i", "url": "https://leetcode.com/problems/find-beautiful-indices-in-the-given-array-i", "title": "find-beautiful-indices-in-the-given-array-i", "meta": {"questionId": "3245", "questionFrontendId": "3006", "title": "Find Beautiful Indices in the Given Array I", "titleSlug": "find-beautiful-indices-in-the-given-array-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 91, "dislikes": 21, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串 s 、字符串 a 、字符串 b 和一个整数 k 。\n如果下标 i 满足以下条件,则认为它是一个 美丽下标:\n\n0 <= i <= s.length - a.length\ns[i..(i + a.length - 1)] == a\n存在下标 j 使得:\n\t\n0 <= j <= s.length - b.length\ns[j..(j + b.length - 1)] == b\n|j - i| <= k\n\n\n\n以数组形式按 从小到大排序 返回美丽下标。\n\n示例 1:\n\n输入:s = \"isawsquirrelnearmysquirrelhouseohmy\", a = \"my\", b = \"squirrel\", k = 15\n输出:[16,33]\n解释:存在 2 个美丽下标:[16,33]。\n- 下标 16 是美丽下标,因为 s[16..17] == \"my\" ,且存在下标 4 ,满足 s[4..11] == \"squirrel\" 且 |16 - 4| <= 15 。\n- 下标 33 是美丽下标,因为 s[33..34] == \"my\" ,且存在下标 18 ,满足 s[18..25] == \"squirrel\" 且 |33 - 18| <= 15 。\n因此返回 [16,33] 作为结果。\n\n示例 2:\n\n输入:s = \"abcd\", a = \"a\", b = \"a\", k = 4\n输出:[0]\n解释:存在 1 个美丽下标:[0]。\n- 下标 0 是美丽下标,因为 s[0..0] == \"a\" ,且存在下标 0 ,满足 s[0..0] == \"a\" 且 |0 - 0| <= 4 。\n因此返回 [0] 作为结果。\n\n\n提示:\n\n1 <= k <= s.length <= 105\n1 <= a.length, b.length <= 10\ns、a、和 b 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def beautifulIndices(self, s: str, a: str, b: str, k: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串 s 、字符串 a 、字符串 b 和一个整数 k 。\n如果下标 i 满足以下条件,则认为它是一个 美丽下标:\n\n0 <= i <= s.length - a.length\ns[i..(i + a.length - 1)] == a\n存在下标 j 使得:\n\t\n0 <= j <= s.length - b.length\ns[j..(j + b.length - 1)] == b\n|j - i| <= k\n\n\n\n以数组形式按 从小到大排序 返回美丽下标。\n\n示例 1:\n\n输入:s = \"isawsquirrelnearmysquirrelhouseohmy\", a = \"my\", b = \"squirrel\", k = 15\n输出:[16,33]\n解释:存在 2 个美丽下标:[16,33]。\n- 下标 16 是美丽下标,因为 s[16..17] == \"my\" ,且存在下标 4 ,满足 s[4..11] == \"squirrel\" 且 |16 - 4| <= 15 。\n- 下标 33 是美丽下标,因为 s[33..34] == \"my\" ,且存在下标 18 ,满足 s[18..25] == \"squirrel\" 且 |33 - 18| <= 15 。\n因此返回 [16,33] 作为结果。\n\n示例 2:\n\n输入:s = \"abcd\", a = \"a\", b = \"a\", k = 4\n输出:[0]\n解释:存在 1 个美丽下标:[0]。\n- 下标 0 是美丽下标,因为 s[0..0] == \"a\" ,且存在下标 0 ,满足 s[0..0] == \"a\" 且 |0 - 0| <= 4 。\n因此返回 [0] 作为结果。\n\n\n提示:\n\n1 <= k <= s.length <= 105\n1 <= a.length, b.length <= 10\ns、a、和 b 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def beautifulIndices(self, s: str, a: str, b: str, k: int) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"isawsquirrelnearmysquirrelhouseohmy\", \"a\": \"my\", \"b\": \"squirrel\", \"k\": 15 }\nassert my_solution.beautifulIndices(**test_input) == [16,33]\n\ntest_input = { \"s\": \"abcd\", \"a\": \"a\", \"b\": \"a\", \"k\": 4 }\nassert my_solution.beautifulIndices(**test_input) == [0]\n\ntest_input = { \"s\": \"sqgrt\", \"a\": \"rt\", \"b\": \"sq\", \"k\": 3 }\nassert my_solution.beautifulIndices(**test_input) == [3]\n\ntest_input = { \"s\": \"mquz\", \"a\": \"tklr\", \"b\": \"caz\", \"k\": 4 }\nassert my_solution.beautifulIndices(**test_input) == []\n\ntest_input = { \"s\": \"wl\", \"a\": \"xjigt
|
|||
|
{"task_id": "weekly-contest-380-maximum-number-that-sum-of-the-prices-is-less-than-or-equal-to-k", "url": "https://leetcode.com/problems/maximum-number-that-sum-of-the-prices-is-less-than-or-equal-to-k", "title": "maximum-number-that-sum-of-the-prices-is-less-than-or-equal-to-k", "meta": {"questionId": "3240", "questionFrontendId": "3007", "title": "Maximum Number That Sum of the Prices Is Less Than or Equal to K", "titleSlug": "maximum-number-that-sum-of-the-prices-is-less-than-or-equal-to-k", "isPaidOnly": false, "difficulty": "Medium", "likes": 125, "dislikes": 74, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数k和一个整数x。\n令 s为整数num的下标从 1开始的二进制表示。我们说一个整数num的 价值是满足i % x == 0 且s[i]是 设置位的 i的数目。\n请你返回最大整数num,满足从 1到 num的所有整数的 价值和小于等于 k。\n注意:\n\n一个整数二进制表示下 设置位是值为 1的数位。\n一个整数的二进制表示下标从右到左编号,比方说如果s == 11100,那么s[4] == 1 且s[2] == 0。\n\n\n示例 1:\n\n输入:k = 9, x = 1\n输出:6\n解释:数字 1 ,2 ,3 ,4 ,5 和 6 二进制表示分别为 \"1\" ,\"10\" ,\"11\" ,\"100\" ,\"101\" 和 \"110\" 。\n由于 x 等于 1 ,每个数字的价值分别为所有设置位的数目。\n这些数字的所有设置位数目总数是 9 ,所以前 6 个数字的价值和为 9 。\n所以答案为 6 。\n示例 2:\n\n输入:k = 7, x = 2\n输出:9\n解释:由于 x 等于 2 ,我们检查每个数字的偶数位。\n2 和 3 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。\n6 和 7 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。\n8 和 9 在二进制表示下的第四个数位为设置位但第二个数位不是设置位,所以它们的价值和为 2 。\n数字 1 ,4 和 5 在二进制下偶数位都不是设置位,所以它们的价值和为 0 。\n10 在二进制表示下的第二个数位和第四个数位都是设置位,所以它的价值为 2 。\n前 9 个数字的价值和为 6 。\n前 10 个数字的价值和为 8,超过了 k = 7 ,所以答案为 9 。\n\n提示:\n\n1 <= k <= 1015\n1 <= x <= 8\n\"\"\"\nclass Solution:\n def findMaximumNumber(self, k: int, x: int) -> int:\n ", "prompt_sft": "给你一个整数k和一个整数x。\n令 s为整数num的下标从 1开始的二进制表示。我们说一个整数num的 价值是满足i % x == 0 且s[i]是 设置位的 i的数目。\n请你返回最大整数num,满足从 1到 num的所有整数的 价值和小于等于 k。\n注意:\n\n一个整数二进制表示下 设置位是值为 1的数位。\n一个整数的二进制表示下标从右到左编号,比方说如果s == 11100,那么s[4] == 1 且s[2] == 0。\n\n\n示例 1:\n\n输入:k = 9, x = 1\n输出:6\n解释:数字 1 ,2 ,3 ,4 ,5 和 6 二进制表示分别为 \"1\" ,\"10\" ,\"11\" ,\"100\" ,\"101\" 和 \"110\" 。\n由于 x 等于 1 ,每个数字的价值分别为所有设置位的数目。\n这些数字的所有设置位数目总数是 9 ,所以前 6 个数字的价值和为 9 。\n所以答案为 6 。\n示例 2:\n\n输入:k = 7, x = 2\n输出:9\n解释:由于 x 等于 2 ,我们检查每个数字的偶数位。\n2 和 3 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。\n6 和 7 在二进制表示下的第二个数位为设置位,所以它们的价值和为 2 。\n8 和 9 在二进制表示下的第四个数位为设置位但第二个数位不是设置位,所以它们的价值和为 2 。\n数字 1 ,4 和 5 在二进制下偶数位都不是设置位,所以它们的价值和为 0 。\n10 在二进制表示下的第二个数位和第四个数位都是设置位,所以它的价值为 2 。\n前 9 个数字的价值和为 6 。\n前 10 个数字的价值和为 8,超过了 k = 7 ,所以答案为 9 。\n\n提示:\n\n1 <= k <= 1015\n1 <= x <= 8\n\
|
|||
|
{"task_id": "weekly-contest-380-find-beautiful-indices-in-the-given-array-ii", "url": "https://leetcode.com/problems/find-beautiful-indices-in-the-given-array-ii", "title": "find-beautiful-indices-in-the-given-array-ii", "meta": {"questionId": "3303", "questionFrontendId": "3008", "title": "Find Beautiful Indices in the Given Array II", "titleSlug": "find-beautiful-indices-in-the-given-array-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 101, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的字符串s、字符串a、字符串b和一个整数k。\n如果下标 i满足以下条件,则认为它是一个 美丽下标:\n\n0 <= i <= s.length - a.length\ns[i..(i + a.length - 1)] == a\n存在下标j使得:\n\t\n0 <= j <= s.length - b.length\ns[j..(j + b.length - 1)] == b\n|j - i| <= k\n\n\n\n以数组形式按从小到大排序返回美丽下标。\n\n示例 1:\n\n输入:s = \"isawsquirrelnearmysquirrelhouseohmy\", a = \"my\", b = \"squirrel\", k = 15\n输出:[16,33]\n解释:存在 2 个美丽下标:[16,33]。\n- 下标 16 是美丽下标,因为 s[16..17] == \"my\" ,且存在下标 4 ,满足 s[4..11] == \"squirrel\" 且 |16 - 4| <= 15 。\n- 下标 33 是美丽下标,因为 s[33..34] == \"my\" ,且存在下标 18 ,满足 s[18..25] == \"squirrel\" 且 |33 - 18| <= 15 。\n因此返回 [16,33] 作为结果。\n示例 2:\n\n输入:s = \"abcd\", a = \"a\", b = \"a\", k = 4\n输出:[0]\n解释:存在 1 个美丽下标:[0]。\n- 下标 0 是美丽下标,因为 s[0..0] == \"a\" ,且存在下标 0 ,满足 s[0..0] == \"a\" 且 |0 - 0| <= 4 。\n因此返回 [0] 作为结果。\n\n提示:\n\n1 <= k <= s.length <= 5 * 105\n1 <= a.length, b.length <= 5 * 105\ns、a、和b只包含小写英文字母。\n\"\"\"\nclass Solution:\n def beautifulIndices(self, s: str, a: str, b: str, k: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0开始的字符串s、字符串a、字符串b和一个整数k。\n如果下标 i满足以下条件,则认为它是一个 美丽下标:\n\n0 <= i <= s.length - a.length\ns[i..(i + a.length - 1)] == a\n存在下标j使得:\n\t\n0 <= j <= s.length - b.length\ns[j..(j + b.length - 1)] == b\n|j - i| <= k\n\n\n\n以数组形式按从小到大排序返回美丽下标。\n\n示例 1:\n\n输入:s = \"isawsquirrelnearmysquirrelhouseohmy\", a = \"my\", b = \"squirrel\", k = 15\n输出:[16,33]\n解释:存在 2 个美丽下标:[16,33]。\n- 下标 16 是美丽下标,因为 s[16..17] == \"my\" ,且存在下标 4 ,满足 s[4..11] == \"squirrel\" 且 |16 - 4| <= 15 。\n- 下标 33 是美丽下标,因为 s[33..34] == \"my\" ,且存在下标 18 ,满足 s[18..25] == \"squirrel\" 且 |33 - 18| <= 15 。\n因此返回 [16,33] 作为结果。\n示例 2:\n\n输入:s = \"abcd\", a = \"a\", b = \"a\", k = 4\n输出:[0]\n解释:存在 1 个美丽下标:[0]。\n- 下标 0 是美丽下标,因为 s[0..0] == \"a\" ,且存在下标 0 ,满足 s[0..0] == \"a\" 且 |0 - 0| <= 4 。\n因此返回 [0] 作为结果。\n\n提示:\n\n1 <= k <= s.length <= 5 * 105\n1 <= a.length, b.length <= 5 * 105\ns、a、和b只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def beautifulIndices(self, s: str, a: str, b: str, k: int) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"isawsquirrelnearmysquirrelhouseohmy\", \"a\": \"my\", \"b\": \"squirrel\", \"k\": 15 }\nassert my_solution.beautifulIndices(**test_input) == [16,33]\n\ntest_input = { \"s\": \"abcd\", \"a\": \"a\", \"b\": \"a\", \"k\": 4 }\nassert my_solution.beautifulIndices(**test_input) == [0]\n\ntest_input = { \"s\": \"a\", \"a\": \"a\", \"b\": \"a\", \"k\": 1 }\nassert my_solution.beautifulIndices(**test_input) == [0]\n\ntest_input = { \"s\": \"aba\", \"a\": \"a\", \"b\": \"a\", \"k\": 1 }\nassert my_solution.beautifulIndices(**test_input) == [0,2]\n\ntest_input = { \"s\": \"nvnvt\", \"a\": \"eq\", \"b\": \"nv\", \"k\": 1
|
|||
|
{"task_id": "weekly-contest-379-maximum-area-of-longest-diagonal-rectangle", "url": "https://leetcode.com/problems/maximum-area-of-longest-diagonal-rectangle", "title": "maximum-area-of-longest-diagonal-rectangle", "meta": {"questionId": "3251", "questionFrontendId": "10035", "title": "Maximum Area of Longest Diagonal Rectangle", "titleSlug": "maximum-area-of-longest-diagonal-rectangle", "isPaidOnly": false, "difficulty": "Easy", "likes": 38, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的二维整数数组 dimensions。\n对于所有下标 i(0 <= i < dimensions.length),dimensions[i][0] 表示矩形 i 的长度,而 dimensions[i][1] 表示矩形 i 的宽度。\n返回对角线最 长 的矩形的 面积 。如果存在多个对角线长度相同的矩形,返回面积最 大 的矩形的面积。\n\n示例 1:\n\n输入:dimensions = [[9,3],[8,6]]\n输出:48\n解释:\n下标 = 0,长度 = 9,宽度 = 3。对角线长度 = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487。\n下标 = 1,长度 = 8,宽度 = 6。对角线长度 = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10。\n因此,下标为 1 的矩形对角线更长,所以返回面积 = 8 * 6 = 48。\n\n示例 2:\n\n输入:dimensions = [[3,4],[4,3]]\n输出:12\n解释:两个矩形的对角线长度相同,为 5,所以最大面积 = 12。\n\n\n提示:\n\n1 <= dimensions.length <= 100\ndimensions[i].length == 2\n1 <= dimensions[i][0], dimensions[i][1] <= 100\n\"\"\"\nclass Solution:\n def areaOfMaxDiagonal(self, dimensions: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的二维整数数组 dimensions。\n对于所有下标 i(0 <= i < dimensions.length),dimensions[i][0] 表示矩形 i 的长度,而 dimensions[i][1] 表示矩形 i 的宽度。\n返回对角线最 长 的矩形的 面积 。如果存在多个对角线长度相同的矩形,返回面积最 大 的矩形的面积。\n\n示例 1:\n\n输入:dimensions = [[9,3],[8,6]]\n输出:48\n解释:\n下标 = 0,长度 = 9,宽度 = 3。对角线长度 = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487。\n下标 = 1,长度 = 8,宽度 = 6。对角线长度 = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10。\n因此,下标为 1 的矩形对角线更长,所以返回面积 = 8 * 6 = 48。\n\n示例 2:\n\n输入:dimensions = [[3,4],[4,3]]\n输出:12\n解释:两个矩形的对角线长度相同,为 5,所以最大面积 = 12。\n\n\n提示:\n\n1 <= dimensions.length <= 100\ndimensions[i].length == 2\n1 <= dimensions[i][0], dimensions[i][1] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def areaOfMaxDiagonal(self, dimensions: List[List[int]]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"dimensions\": [[9,3],[8,6]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 48\n\ntest_input = { \"dimensions\": [[3,4],[4,3]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 12\n\ntest_input = { \"dimensions\": [[4,10],[4,9],[9,3],[10,8]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 80\n\ntest_input = { \"dimensions\": [[2,6],[5,1],[3,10],[8,4]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 30\n\ntest_input = { \"dimensions\": [[3,7],[2,10],[3,4],[9,9],[5,10]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 81\n\ntest_input = { \"dimensions\": [[10,4]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 40\n\ntest_input = { \"dimensions\": [[9,9],[1,8],[10,5],[2,8],[6,3],[7,1]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 81\n\ntest_input = { \"dimensions\": [[10,3],[5,9],[8,3]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 30\n\ntest_input = { \"dimensions\": [[2,7],[3,2],[3,3],[10,4],[5,3],[8,10],[8,8],[4,7]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 80\n\ntest_input = { \"dimensions\": [[1,10],[3,10],[4,4],[2,6],[6,3],[6,4],[9,1],[6,1],[2,3]] }\nassert my_solution.areaOfMaxDiagonal(**test_input) == 30\n\ntest_input = { \"dimensions\": [
|
|||
|
{"task_id": "weekly-contest-379-minimum-moves-to-capture-the-queen", "url": "https://leetcode.com/problems/minimum-moves-to-capture-the-queen", "title": "minimum-moves-to-capture-the-queen", "meta": {"questionId": "3270", "questionFrontendId": "10036", "title": "Minimum Moves to Capture The Queen", "titleSlug": "minimum-moves-to-capture-the-queen", "isPaidOnly": false, "difficulty": "Medium", "likes": 71, "dislikes": 115, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n现有一个下标从 0 开始的 8 x 8 棋盘,上面有 3 枚棋子。\n给你 6 个整数 a 、b 、c 、d 、e 和 f ,其中:\n\n(a, b) 表示白色车的位置。\n(c, d) 表示白色象的位置。\n(e, f) 表示黑皇后的位置。\n\n假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。\n请注意:\n\n车可以向垂直或水平方向移动任意数量的格子,但不能跳过其他棋子。\n象可以沿对角线方向移动任意数量的格子,但不能跳过其他棋子。\n如果车或象能移向皇后所在的格子,则认为它们可以捕获皇后。\n皇后不能移动。\n\n\n示例 1:\n\n\n输入:a = 1, b = 1, c = 8, d = 8, e = 2, f = 3\n输出:2\n解释:将白色车先移动到 (1, 3) ,然后移动到 (2, 3) 来捕获黑皇后,共需移动 2 次。\n由于起始时没有任何棋子正在攻击黑皇后,要想捕获黑皇后,移动次数不可能少于 2 次。\n\n示例 2:\n\n\n输入:a = 5, b = 3, c = 3, d = 4, e = 5, f = 2\n输出:1\n解释:可以通过以下任一方式移动 1 次捕获黑皇后:\n- 将白色车移动到 (5, 2) 。\n- 将白色象移动到 (5, 2) 。\n\n\n提示:\n\n1 <= a, b, c, d, e, f <= 8\n两枚棋子不会同时出现在同一个格子上。\n\"\"\"\nclass Solution:\n def minMovesToCaptureTheQueen(self, a: int, b: int, c: int, d: int, e: int, f: int) -> int:\n ", "prompt_sft": "现有一个下标从 0 开始的 8 x 8 棋盘,上面有 3 枚棋子。\n给你 6 个整数 a 、b 、c 、d 、e 和 f ,其中:\n\n(a, b) 表示白色车的位置。\n(c, d) 表示白色象的位置。\n(e, f) 表示黑皇后的位置。\n\n假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。\n请注意:\n\n车可以向垂直或水平方向移动任意数量的格子,但不能跳过其他棋子。\n象可以沿对角线方向移动任意数量的格子,但不能跳过其他棋子。\n如果车或象能移向皇后所在的格子,则认为它们可以捕获皇后。\n皇后不能移动。\n\n\n示例 1:\n\n\n输入:a = 1, b = 1, c = 8, d = 8, e = 2, f = 3\n输出:2\n解释:将白色车先移动到 (1, 3) ,然后移动到 (2, 3) 来捕获黑皇后,共需移动 2 次。\n由于起始时没有任何棋子正在攻击黑皇后,要想捕获黑皇后,移动次数不可能少于 2 次。\n\n示例 2:\n\n\n输入:a = 5, b = 3, c = 3, d = 4, e = 5, f = 2\n输出:1\n解释:可以通过以下任一方式移动 1 次捕获黑皇后:\n- 将白色车移动到 (5, 2) 。\n- 将白色象移动到 (5, 2) 。\n\n\n提示:\n\n1 <= a, b, c, d, e, f <= 8\n两枚棋子不会同时出现在同一个格子上。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minMovesToCaptureTheQueen(self, a: int, b: int, c: int, d: int, e: int, f: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"a\": 1, \"b\": 1, \"c\": 8, \"d\": 8, \"e\": 2, \"f\": 3 }\nassert my_solution.minMovesToCaptureTheQueen(**test_input) == 2\n\ntest_input = { \"a\": 5, \"b\": 3, \"c\": 3, \"d\": 4, \"e\": 5, \"f\": 2 }\nassert my_solution.minMovesToCaptureTheQueen(**test_input) == 1\n\ntest_input = { \"a\": 4, \"b\": 3, \"c\": 3, \"d\": 4, \"e\": 5, \"f\": 2 }\nassert my_solution.minMovesToCaptureTheQueen(**test_input) == 2\n\ntest_input = { \"a\": 1, \"b\": 1, \"c\": 1, \"d\": 4, \"e\": 1, \"f\": 8 }\nassert my_solution.minMovesToCaptureTheQueen(**test_input) == 2\n\ntest_input = { \"a\": 4, \"b\": 3, \"c\": 3, \"d\": 4, \"e\": 2, \"f\": 5 }\nassert my_sol
|
|||
|
{"task_id": "weekly-contest-379-maximum-size-of-a-set-after-removals", "url": "https://leetcode.com/problems/maximum-size-of-a-set-after-removals", "title": "maximum-size-of-a-set-after-removals", "meta": {"questionId": "3228", "questionFrontendId": "10037", "title": "Maximum Size of a Set After Removals", "titleSlug": "maximum-size-of-a-set-after-removals", "isPaidOnly": false, "difficulty": "Medium", "likes": 116, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们的长度都是偶数 n 。\n你必须从 nums1 中移除 n / 2 个元素,同时从 nums2 中也移除 n / 2 个元素。移除之后,你将 nums1 和 nums2 中剩下的元素插入到集合 s 中。\n返回集合 s可能的 最多 包含多少元素。\n\n示例 1:\n\n输入:nums1 = [1,2,1,2], nums2 = [1,1,1,1]\n输出:2\n解释:从 nums1 和 nums2 中移除两个 1 。移除后,数组变为 nums1 = [2,2] 和 nums2 = [1,1] 。因此,s = {1,2} 。\n可以证明,在移除之后,集合 s 最多可以包含 2 个元素。\n\n示例 2:\n\n输入:nums1 = [1,2,3,4,5,6], nums2 = [2,3,2,3,2,3]\n输出:5\n解释:从 nums1 中移除 2、3 和 6 ,同时从 nums2 中移除两个 3 和一个 2 。移除后,数组变为 nums1 = [1,4,5] 和 nums2 = [2,3,2] 。因此,s = {1,2,3,4,5} 。\n可以证明,在移除之后,集合 s 最多可以包含 5 个元素。 \n\n示例 3:\n\n输入:nums1 = [1,1,2,2,3,3], nums2 = [4,4,5,5,6,6]\n输出:6\n解释:从 nums1 中移除 1、2 和 3 ,同时从 nums2 中移除 4、5 和 6 。移除后,数组变为 nums1 = [1,2,3] 和 nums2 = [4,5,6] 。因此,s = {1,2,3,4,5,6} 。\n可以证明,在移除之后,集合 s 最多可以包含 6 个元素。 \n\n提示:\n\nn == nums1.length == nums2.length\n1 <= n <= 2 * 104\nn是偶数。\n1 <= nums1[i], nums2[i] <= 109\n\"\"\"\nclass Solution:\n def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:\n ", "prompt_sft": "给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们的长度都是偶数 n 。\n你必须从 nums1 中移除 n / 2 个元素,同时从 nums2 中也移除 n / 2 个元素。移除之后,你将 nums1 和 nums2 中剩下的元素插入到集合 s 中。\n返回集合 s可能的 最多 包含多少元素。\n\n示例 1:\n\n输入:nums1 = [1,2,1,2], nums2 = [1,1,1,1]\n输出:2\n解释:从 nums1 和 nums2 中移除两个 1 。移除后,数组变为 nums1 = [2,2] 和 nums2 = [1,1] 。因此,s = {1,2} 。\n可以证明,在移除之后,集合 s 最多可以包含 2 个元素。\n\n示例 2:\n\n输入:nums1 = [1,2,3,4,5,6], nums2 = [2,3,2,3,2,3]\n输出:5\n解释:从 nums1 中移除 2、3 和 6 ,同时从 nums2 中移除两个 3 和一个 2 。移除后,数组变为 nums1 = [1,4,5] 和 nums2 = [2,3,2] 。因此,s = {1,2,3,4,5} 。\n可以证明,在移除之后,集合 s 最多可以包含 5 个元素。 \n\n示例 3:\n\n输入:nums1 = [1,1,2,2,3,3], nums2 = [4,4,5,5,6,6]\n输出:6\n解释:从 nums1 中移除 1、2 和 3 ,同时从 nums2 中移除 4、5 和 6 。移除后,数组变为 nums1 = [1,2,3] 和 nums2 = [4,5,6] 。因此,s = {1,2,3,4,5,6} 。\n可以证明,在移除之后,集合 s 最多可以包含 6 个元素。 \n\n提示:\n\nn == nums1.length == nums2.length\n1 <= n <= 2 * 104\nn是偶数。\n1 <= nums1[i], nums2[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumSetSize(self, nums1: List[int], nums2: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums1\": [1,2,1,2], \"nums2\": [1,1,1,1] }\nassert my_solution.maximumSetSize(**test_input) == 2\n\ntest_input = { \"nums1\": [1,2,3,4,5,6], \"nums2\": [2,3,2,3,2,3] }\nassert my_solution.maximumSetSize(**test_input) == 5\n\ntest_input = { \"nums1\": [1,1,2,2,3,3], \"nums2\": [4,4,5,5,6,6] }\nassert my_solution.maximumSetSize(**test_input) == 6\n\ntest_input = { \"nums1\": [1,2,1,1], \"nums2\": [1,2,3,4]
|
|||
|
{"task_id": "weekly-contest-379-maximize-the-number-of-partitions-after-operations", "url": "https://leetcode.com/problems/maximize-the-number-of-partitions-after-operations", "title": "maximize-the-number-of-partitions-after-operations", "meta": {"questionId": "3233", "questionFrontendId": "10038", "title": "Maximize the Number of Partitions After Operations", "titleSlug": "maximize-the-number-of-partitions-after-operations", "isPaidOnly": false, "difficulty": "Hard", "likes": 41, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串s和一个整数k。\n你需要执行以下分割操作,直到字符串s变为空:\n\n选择s的最长前缀,该前缀最多包含k个不同字符。\n删除这个前缀,并将分割数量加一。如果有剩余字符,它们在s中保持原来的顺序。\n\n执行操作之 前 ,你可以将s中至多一处 下标的对应字符更改为另一个小写英文字母。\n在最优选择情形下改变至多一处下标对应字符后,用整数表示并返回操作结束时得到的最大分割数量。\n\n示例 1:\n\n输入:s = \"accca\", k = 2\n输出:3\n解释:在此示例中,为了最大化得到的分割数量,可以将 s[2] 改为 'b'。\ns 变为 \"acbca\"。\n按照以下方式执行操作,直到 s 变为空:\n- 选择最长且至多包含 2 个不同字符的前缀,\"acbca\"。\n- 删除该前缀,s 变为 \"bca\"。现在分割数量为 1。\n- 选择最长且至多包含 2 个不同字符的前缀,\"bca\"。\n- 删除该前缀,s 变为 \"a\"。现在分割数量为 2。\n- 选择最长且至多包含 2 个不同字符的前缀,\"a\"。\n- 删除该前缀,s 变为空。现在分割数量为 3。\n因此,答案是 3。\n可以证明,分割数量不可能超过 3。\n示例 2:\n\n输入:s = \"aabaab\", k = 3\n输出:1\n解释:在此示例中,为了最大化得到的分割数量,可以保持 s 不变。\n按照以下方式执行操作,直到 s 变为空: \n- 选择最长且至多包含 3 个不同字符的前缀,\"aabaab\"。\n- 删除该前缀,s 变为空。现在分割数量为 1。\n因此,答案是 1。\n可以证明,分割数量不可能超过 1。\n示例 3:\n\n输入:s = \"xxyz\", k = 1\n输出:4\n解释:在此示例中,为了最大化得到的分割数量,可以将 s[1] 改为 'a'。\ns 变为 \"xayz\"。\n按照以下方式执行操作,直到 s 变为空:\n- 选择最长且至多包含 1 个不同字符的前缀,\"xayz\"。\n- 删除该前缀,s 变为 \"ayz\"。现在分割数量为 1。\n- 选择最长且至多包含 1 个不同字符的前缀,\"ayz\"。\n- 删除该前缀,s 变为 \"yz\",现在分割数量为 2。\n- 选择最长且至多包含 1 个不同字符的前缀,\"yz\"。\n- 删除该前缀,s 变为 \"z\"。现在分割数量为 3。\n- 选择最且至多包含 1 个不同字符的前缀,\"z\"。\n- 删除该前缀,s 变为空。现在分割数量为 4。\n因此,答案是 4。\n可以证明,分割数量不可能超过 4。\n\n提示:\n\n1 <= s.length <= 104\ns只包含小写英文字母。\n1 <= k <= 26\n\"\"\"\nclass Solution:\n def maxPartitionsAfterOperations(self, s: str, k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串s和一个整数k。\n你需要执行以下分割操作,直到字符串s变为空:\n\n选择s的最长前缀,该前缀最多包含k个不同字符。\n删除这个前缀,并将分割数量加一。如果有剩余字符,它们在s中保持原来的顺序。\n\n执行操作之 前 ,你可以将s中至多一处 下标的对应字符更改为另一个小写英文字母。\n在最优选择情形下改变至多一处下标对应字符后,用整数表示并返回操作结束时得到的最大分割数量。\n\n示例 1:\n\n输入:s = \"accca\", k = 2\n输出:3\n解释:在此示例中,为了最大化得到的分割数量,可以将 s[2] 改为 'b'。\ns 变为 \"acbca\"。\n按照以下方式执行操作,直到 s 变为空:\
|
|||
|
{"task_id": "biweekly-contest-121-smallest-missing-integer-greater-than-sequential-prefix-sum", "url": "https://leetcode.com/problems/smallest-missing-integer-greater-than-sequential-prefix-sum", "title": "smallest-missing-integer-greater-than-sequential-prefix-sum", "meta": {"questionId": "3236", "questionFrontendId": "10031", "title": "Smallest Missing Integer Greater Than Sequential Prefix Sum", "titleSlug": "smallest-missing-integer-greater-than-sequential-prefix-sum", "isPaidOnly": false, "difficulty": "Easy", "likes": 41, "dislikes": 122, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的整数数组nums。\n如果一个前缀nums[0..i]满足对于1 <= j <= i的所有元素都有nums[j] = nums[j - 1] + 1,那么我们称这个前缀是一个 顺序前缀 。特殊情况是,只包含nums[0]的前缀也是一个 顺序前缀 。\n请你返回 nums中没有出现过的 最小整数x,满足x大于等于最长 顺序前缀的和。\n\n示例 1:\n\n输入:nums = [1,2,3,2,5]\n输出:6\n解释:nums 的最长顺序前缀是 [1,2,3] ,和为 6 ,6 不在数组中,所以 6 是大于等于最长顺序前缀和的最小整数。\n\n示例 2:\n\n输入:nums = [3,4,5,1,12,14,13]\n输出:15\n解释:nums 的最长顺序前缀是 [3,4,5] ,和为 12 ,12、13 和 14 都在数组中,但 15 不在,所以 15 是大于等于最长顺序前缀和的最小整数。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 50\n\"\"\"\nclass Solution:\n def missingInteger(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的整数数组nums。\n如果一个前缀nums[0..i]满足对于1 <= j <= i的所有元素都有nums[j] = nums[j - 1] + 1,那么我们称这个前缀是一个 顺序前缀 。特殊情况是,只包含nums[0]的前缀也是一个 顺序前缀 。\n请你返回 nums中没有出现过的 最小整数x,满足x大于等于最长 顺序前缀的和。\n\n示例 1:\n\n输入:nums = [1,2,3,2,5]\n输出:6\n解释:nums 的最长顺序前缀是 [1,2,3] ,和为 6 ,6 不在数组中,所以 6 是大于等于最长顺序前缀和的最小整数。\n\n示例 2:\n\n输入:nums = [3,4,5,1,12,14,13]\n输出:15\n解释:nums 的最长顺序前缀是 [3,4,5] ,和为 12 ,12、13 和 14 都在数组中,但 15 不在,所以 15 是大于等于最长顺序前缀和的最小整数。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def missingInteger(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,2,5] }\nassert my_solution.missingInteger(**test_input) == 6\n\ntest_input = { \"nums\": [3,4,5,1,12,14,13] }\nassert my_solution.missingInteger(**test_input) == 15\n\ntest_input = { \"nums\": [29,30,31,32,33,34,35,36,37] }\nassert my_solution.missingInteger(**test_input) == 297\n\ntest_input = { \"nums\": [19,20,21,22] }\nassert my_solution.missingInteger(**test_input) == 82\n\ntest_input = { \"nums\": [18,19,20,21,22,23,24,25,26,27,28,9] }\nassert my_solution.missingInteger(**test_input) == 253\n\ntest_input = { \"nums\": [4,5,6,7,8,8,9,4,3,2,7] }\nassert my_solution.missingInteger(**test_input) == 30\n\ntest_input = { \"nums\": [38] }\nassert my_solution.missingInteger(**test_input) == 39\n\ntest_input = { \"nums\": [1] }\nassert my_solution.missingInteger(**test_input) == 2\n\ntest_input = { \"nums\": [11,12,13] }\nassert my_solution.missingInteger(**test_input) == 36\n\ntest_input = { \"nums\": [47,48,49,5,3] }\nassert my_solution.missingInteger(**test_input) == 144\n\ntest_input = { \"nums\": [23,24,25,4,5,1] }\nassert my_solution.missingInteger(**test_input) == 72\n\ntest_input = { \"nums\": [8,9,10,10,7,8] }\nassert my_solution.missingInteger(**test_input) == 27\n\ntest_input = { \"nums\": [31,32,33,34,10,8,7,9,7,9,9,5,10,1] }\nassert my_solution.missingInteger(**test_input) == 130\n\ntest_input = { \"nums\": [17,18,19,20,21,22,3,7,10,10] }\nasser
|
|||
|
{"task_id": "biweekly-contest-121-minimum-number-of-operations-to-make-array-xor-equal-to-k", "url": "https://leetcode.com/problems/minimum-number-of-operations-to-make-array-xor-equal-to-k", "title": "minimum-number-of-operations-to-make-array-xor-equal-to-k", "meta": {"questionId": "3249", "questionFrontendId": "10032", "title": "Minimum Number of Operations to Make Array XOR Equal to K", "titleSlug": "minimum-number-of-operations-to-make-array-xor-equal-to-k", "isPaidOnly": false, "difficulty": "Medium", "likes": 56, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的整数数组nums和一个正整数k。\n你可以对数组执行以下操作 任意次:\n\n选择数组里的 任意一个元素,并将它的二进制表示翻转一个数位,翻转数位表示将0 变成1或者将 1变成 0。\n\n你的目标是让数组里 所有元素的按位异或和得到 k,请你返回达成这一目标的 最少操作次数。\n注意,你也可以将一个数的前导 0 翻转。比方说,数字(101)2翻转第四个数位,得到(1101)2。\n\n示例 1:\n\n输入:nums = [2,1,3,4], k = 1\n输出:2\n解释:我们可以执行以下操作:\n- 选择下标为 2 的元素,也就是 3 == (011)2,我们翻转第一个数位得到 (010)2 == 2 。数组变为 [2,1,2,4] 。\n- 选择下标为 0 的元素,也就是 2 == (010)2 ,我们翻转第三个数位得到 (110)2 == 6 。数组变为 [6,1,2,4] 。\n最终数组的所有元素异或和为 (6 XOR 1 XOR 2 XOR 4) == 1 == k 。\n无法用少于 2 次操作得到异或和等于 k 。\n\n示例 2:\n\n输入:nums = [2,0,2,0], k = 0\n输出:0\n解释:数组所有元素的异或和为 (2 XOR 0 XOR 2 XOR 0) == 0 == k 。所以不需要进行任何操作。\n\n\n提示:\n\n1 <= nums.length <= 105\n0 <= nums[i] <= 106\n0 <= k <= 106\n\"\"\"\nclass Solution:\n def minOperations(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的整数数组nums和一个正整数k。\n你可以对数组执行以下操作 任意次:\n\n选择数组里的 任意一个元素,并将它的二进制表示翻转一个数位,翻转数位表示将0 变成1或者将 1变成 0。\n\n你的目标是让数组里 所有元素的按位异或和得到 k,请你返回达成这一目标的 最少操作次数。\n注意,你也可以将一个数的前导 0 翻转。比方说,数字(101)2翻转第四个数位,得到(1101)2。\n\n示例 1:\n\n输入:nums = [2,1,3,4], k = 1\n输出:2\n解释:我们可以执行以下操作:\n- 选择下标为 2 的元素,也就是 3 == (011)2,我们翻转第一个数位得到 (010)2 == 2 。数组变为 [2,1,2,4] 。\n- 选择下标为 0 的元素,也就是 2 == (010)2 ,我们翻转第三个数位得到 (110)2 == 6 。数组变为 [6,1,2,4] 。\n最终数组的所有元素异或和为 (6 XOR 1 XOR 2 XOR 4) == 1 == k 。\n无法用少于 2 次操作得到异或和等于 k 。\n\n示例 2:\n\n输入:nums = [2,0,2,0], k = 0\n输出:0\n解释:数组所有元素的异或和为 (2 XOR 0 XOR 2 XOR 0) == 0 == k 。所以不需要进行任何操作。\n\n\n提示:\n\n1 <= nums.length <= 105\n0 <= nums[i] <= 106\n0 <= k <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minOperations(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,1,3,4], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [2,0,2,0], \"k\": 0 }\nassert my_solution.minOperations(**test_input) == 0\n\ntest_input = { \"nums\": [4], \"k\": 7 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [3,13,9,8,5,18,11,10], \"k\": 13 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [9,7,9,14,8,6], \"k\": 12 }\nassert my_solution.minOperations(**test_input) == 3\n\ntest_input = { \"nums\": [13,9,10,16,11,8,1], \"k\": 17 }\nassert my_solution.minOperations(**test_input) =
|
|||
|
{"task_id": "biweekly-contest-121-minimum-number-of-operations-to-make-x-and-y-equal", "url": "https://leetcode.com/problems/minimum-number-of-operations-to-make-x-and-y-equal", "title": "minimum-number-of-operations-to-make-x-and-y-equal", "meta": {"questionId": "3239", "questionFrontendId": "10033", "title": "Minimum Number of Operations to Make X and Y Equal", "titleSlug": "minimum-number-of-operations-to-make-x-and-y-equal", "isPaidOnly": false, "difficulty": "Medium", "likes": 103, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数x 和y。\n一次操作中,你可以执行以下四种操作之一:\n\n如果 x是 11的倍数,将x除以11。\n如果 x是 5的倍数,将 x除以 5。\n将x 减1。\n将x加1。\n\n请你返回让 x和 y相等的 最少操作次数。\n\n示例 1:\n\n输入:x = 26, y = 1\n输出:3\n解释:我们可以通过以下操作将 26 变为 1 :\n1. 将 x 减 1\n2. 将 x 除以 5\n3. 将 x 除以 5\n将 26 变为 1 最少需要 3 次操作。\n\n示例 2:\n\n输入:x = 54, y = 2\n输出:4\n解释:我们可以通过以下操作将 54 变为 2 :\n1. 将 x 加 1\n2. 将 x 除以 11\n3. 将 x 除以 5\n4. 将 x 加 1\n将 54 变为 2 最少需要 4 次操作。\n\n示例 3:\n\n输入:x = 25, y = 30\n输出:5\n解释:我们可以通过以下操作将 25 变为 30 :\n1. 将 x 加 1\n2. 将 x 加 1\n3. 将 x 加 1\n4. 将 x 加 1\n5. 将 x 加 1\n将 25 变为 30 最少需要 5 次操作。\n\n\n提示:\n\n1 <= x, y <= 104\n\"\"\"\nclass Solution:\n def minimumOperationsToMakeEqual(self, x: int, y: int) -> int:\n ", "prompt_sft": "给你两个正整数x 和y。\n一次操作中,你可以执行以下四种操作之一:\n\n如果 x是 11的倍数,将x除以11。\n如果 x是 5的倍数,将 x除以 5。\n将x 减1。\n将x加1。\n\n请你返回让 x和 y相等的 最少操作次数。\n\n示例 1:\n\n输入:x = 26, y = 1\n输出:3\n解释:我们可以通过以下操作将 26 变为 1 :\n1. 将 x 减 1\n2. 将 x 除以 5\n3. 将 x 除以 5\n将 26 变为 1 最少需要 3 次操作。\n\n示例 2:\n\n输入:x = 54, y = 2\n输出:4\n解释:我们可以通过以下操作将 54 变为 2 :\n1. 将 x 加 1\n2. 将 x 除以 11\n3. 将 x 除以 5\n4. 将 x 加 1\n将 54 变为 2 最少需要 4 次操作。\n\n示例 3:\n\n输入:x = 25, y = 30\n输出:5\n解释:我们可以通过以下操作将 25 变为 30 :\n1. 将 x 加 1\n2. 将 x 加 1\n3. 将 x 加 1\n4. 将 x 加 1\n5. 将 x 加 1\n将 25 变为 30 最少需要 5 次操作。\n\n\n提示:\n\n1 <= x, y <= 104\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumOperationsToMakeEqual(self, x: int, y: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"x\": 26, \"y\": 1 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 3\n\ntest_input = { \"x\": 54, \"y\": 2 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 4\n\ntest_input = { \"x\": 25, \"y\": 30 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 5\n\ntest_input = { \"x\": 1, \"y\": 1 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 0\n\ntest_input = { \"x\": 1, \"y\": 2 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 1\n\ntest_input = { \"x\": 1, \"y\": 3 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 2\n\ntest_input = { \"x\": 1, \"y\": 4 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 3\n\ntest_input = { \"x\": 1, \"y\": 5 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 4\n\ntest_input = { \"x\": 1, \"y\": 6 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 5\n\ntest_input = { \"x\": 1, \"y\": 7 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 6\n\ntest_input = { \"x\": 1, \"y\": 8 }\nassert my_solution.minimumOperationsToMakeEqual(**test_input) == 7\n\ntest_input = { \"x\": 1, \"y\": 9 }\nassert my_solution.minimumOper
|
|||
|
{"task_id": "biweekly-contest-121-count-the-number-of-powerful-integers", "url": "https://leetcode.com/problems/count-the-number-of-powerful-integers", "title": "count-the-number-of-powerful-integers", "meta": {"questionId": "3243", "questionFrontendId": "10034", "title": "Count the Number of Powerful Integers", "titleSlug": "count-the-number-of-powerful-integers", "isPaidOnly": false, "difficulty": "Hard", "likes": 53, "dislikes": 1, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个整数start,finish和limit。同时给你一个下标从0开始的字符串s,表示一个 正整数。\n如果一个 正整数x 末尾部分是s(换句话说,s是 x的 后缀),且 x中的每个数位至多是 limit,那么我们称 x是 强大的。\n请你返回区间[start..finish]内强大整数的总数目。\n如果一个字符串 x是 y中某个下标开始(包括0),到下标为y.length - 1结束的子字符串,那么我们称x是y的一个后缀。比方说,25是5125的一个后缀,但不是512的后缀。\n\n示例 1:\n\n输入:start = 1, finish = 6000, limit = 4, s = \"124\"\n输出:5\n解释:区间 [1..6000] 内的强大数字为 124 ,1124 ,2124 ,3124 和 4124 。这些整数的各个数位都 <= 4 且 \"124\" 是它们的后缀。注意 5124 不是强大整数,因为第一个数位 5 大于 4 。\n这个区间内总共只有这 5 个强大整数。\n\n示例 2:\n\n输入:start = 15, finish = 215, limit = 6, s = \"10\"\n输出:2\n解释:区间 [15..215] 内的强大整数为 110 和 210 。这些整数的各个数位都 <= 6 且 \"10\" 是它们的后缀。\n这个区间总共只有这 2 个强大整数。\n\n示例 3:\n\n输入:start = 1000, finish = 2000, limit = 4, s = \"3000\"\n输出:0\n解释:区间 [1000..2000] 内的整数都小于 3000 ,所以 \"3000\" 不可能是这个区间内任何整数的后缀。\n\n\n提示:\n\n1 <= start <= finish <= 1015\n1 <= limit <= 9\n1 <= s.length <= floor(log10(finish)) + 1\ns数位中每个数字都小于等于limit。\ns不包含任何前导 0 。\n\"\"\"\nclass Solution:\n def numberOfPowerfulInt(self, start: int, finish: int, limit: int, s: str) -> int:\n ", "prompt_sft": "给你三个整数start,finish和limit。同时给你一个下标从0开始的字符串s,表示一个 正整数。\n如果一个 正整数x 末尾部分是s(换句话说,s是 x的 后缀),且 x中的每个数位至多是 limit,那么我们称 x是 强大的。\n请你返回区间[start..finish]内强大整数的总数目。\n如果一个字符串 x是 y中某个下标开始(包括0),到下标为y.length - 1结束的子字符串,那么我们称x是y的一个后缀。比方说,25是5125的一个后缀,但不是512的后缀。\n\n示例 1:\n\n输入:start = 1, finish = 6000, limit = 4, s = \"124\"\n输出:5\n解释:区间 [1..6000] 内的强大数字为 124 ,1124 ,2124 ,3124 和 4124 。这些整数的各个数位都 <= 4 且 \"124\" 是它们的后缀。注意 5124 不是强大整数,因为第一个数位 5 大于 4 。\n这个区间内总共只有这 5 个强大整数。\n\n示例 2:\n\n输入:start = 15, finish = 215, limit = 6, s = \"10\"\n输出:2\n解释:区间 [15..215] 内的强大整数为 110 和 210 。这些整数的各个数位都 <= 6 且 \"10\" 是它们的后缀。\n这个区间总共只有这 2 个强大整数。\n\n示例 3:\n\n输入:start = 1000, finish = 2000, limit = 4, s = \"3000\"\n输出:0\n解释:区间 [1000..2000] 内的整数都小于 3000 ,所以 \"3000\" 不可能是这个区间内任何整数的后缀。\n\n\n提示:\n\n1 <= start <= finish <= 1015\n1 <= limit <= 9\n1 <= s.length <= floor(log10(finish)) + 1\ns数位中每个数字都小于等于limit。\ns不包含任何前导 0 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfPowerfulInt(self, start: int, finish: int, limit: int, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"start\": 1, \"finish\": 60
|
|||
|
{"task_id": "weekly-contest-378-check-if-bitwise-or-has-trailing-zeros", "url": "https://leetcode.com/problems/check-if-bitwise-or-has-trailing-zeros", "title": "check-if-bitwise-or-has-trailing-zeros", "meta": {"questionId": "3246", "questionFrontendId": "2980", "title": "Check if Bitwise OR Has Trailing Zeros", "titleSlug": "check-if-bitwise-or-has-trailing-zeros", "isPaidOnly": false, "difficulty": "Easy", "likes": 68, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个 正整数 数组 nums 。\n你需要检查是否可以从数组中选出 两个或更多 元素,满足这些元素的按位或运算( OR)结果的二进制表示中 至少 存在一个尾随零。\n例如,数字 5 的二进制表示是 \"101\",不存在尾随零,而数字 4 的二进制表示是 \"100\",存在两个尾随零。\n如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回 true;否则,返回 false 。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:true\n解释:如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 \"110\" ,存在一个尾随零。\n\n示例 2:\n\n输入:nums = [2,4,8,16]\n输出:true\n解释:如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 \"110\",存在一个尾随零。\n其他按位或运算结果存在尾随零的可能选择方案包括:(2, 8), (2, 16), (4, 8), (4, 16), (8, 16), (2, 4, 8), (2, 4, 16), (2, 8, 16), (4, 8, 16), 以及 (2, 4, 8, 16) 。\n\n示例 3:\n\n输入:nums = [1,3,5,7,9]\n输出:false\n解释:不存在按位或运算结果存在尾随零的选择方案。\n\n\n提示:\n\n2 <= nums.length <= 100\n1 <= nums[i] <= 100\n\"\"\"\nclass Solution:\n def hasTrailingZeros(self, nums: List[int]) -> bool:\n ", "prompt_sft": "给你一个 正整数 数组 nums 。\n你需要检查是否可以从数组中选出 两个或更多 元素,满足这些元素的按位或运算( OR)结果的二进制表示中 至少 存在一个尾随零。\n例如,数字 5 的二进制表示是 \"101\",不存在尾随零,而数字 4 的二进制表示是 \"100\",存在两个尾随零。\n如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回 true;否则,返回 false 。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:true\n解释:如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 \"110\" ,存在一个尾随零。\n\n示例 2:\n\n输入:nums = [2,4,8,16]\n输出:true\n解释:如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 \"110\",存在一个尾随零。\n其他按位或运算结果存在尾随零的可能选择方案包括:(2, 8), (2, 16), (4, 8), (4, 16), (8, 16), (2, 4, 8), (2, 4, 16), (2, 8, 16), (4, 8, 16), 以及 (2, 4, 8, 16) 。\n\n示例 3:\n\n输入:nums = [1,3,5,7,9]\n输出:false\n解释:不存在按位或运算结果存在尾随零的选择方案。\n\n\n提示:\n\n2 <= nums.length <= 100\n1 <= nums[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def hasTrailingZeros(self, nums: List[int]) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4,5] }\nassert my_solution.hasTrailingZeros(**test_input) == True\n\ntest_input = { \"nums\": [1,3,5,7,9] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [1,2] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [2,4,8,16] }\nassert my_solution.hasTrailingZeros(**test_input) == True\n\ntest_input = { \"nums\": [1,3] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [1,7] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [3,3] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [3,4] }\nassert my_solution.hasTrailingZeros(**test_input) == False\n\ntest_input = { \"nums\": [2,2] }\nassert my_so
|
|||
|
{"task_id": "weekly-contest-378-find-longest-special-substring-that-occurs-thrice-i", "url": "https://leetcode.com/problems/find-longest-special-substring-that-occurs-thrice-i", "title": "find-longest-special-substring-that-occurs-thrice-i", "meta": {"questionId": "3267", "questionFrontendId": "2981", "title": "Find Longest Special Substring That Occurs Thrice I", "titleSlug": "find-longest-special-substring-that-occurs-thrice-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 112, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个仅由小写英文字母组成的字符串 s 。\n如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 \"abc\" 不是特殊字符串,而字符串 \"ddd\"、\"zz\" 和 \"f\" 是特殊字符串。\n返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。\n子字符串 是字符串中的一个连续 非空 字符序列。\n\n示例 1:\n\n输入:s = \"aaaa\"\n输出:2\n解释:出现三次的最长特殊子字符串是 \"aa\" :子字符串 \"aaaa\"、\"aaaa\" 和 \"aaaa\"。\n可以证明最大长度是 2 。\n\n示例 2:\n\n输入:s = \"abcdef\"\n输出:-1\n解释:不存在出现至少三次的特殊子字符串。因此返回 -1 。\n\n示例 3:\n\n输入:s = \"abcaba\"\n输出:1\n解释:出现三次的最长特殊子字符串是 \"a\" :子字符串 \"abcaba\"、\"abcaba\" 和 \"abcaba\"。\n可以证明最大长度是 1 。\n\n\n提示:\n\n3 <= s.length <= 50\ns 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def maximumLength(self, s: str) -> int:\n ", "prompt_sft": "给你一个仅由小写英文字母组成的字符串 s 。\n如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 \"abc\" 不是特殊字符串,而字符串 \"ddd\"、\"zz\" 和 \"f\" 是特殊字符串。\n返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。\n子字符串 是字符串中的一个连续 非空 字符序列。\n\n示例 1:\n\n输入:s = \"aaaa\"\n输出:2\n解释:出现三次的最长特殊子字符串是 \"aa\" :子字符串 \"aaaa\"、\"aaaa\" 和 \"aaaa\"。\n可以证明最大长度是 2 。\n\n示例 2:\n\n输入:s = \"abcdef\"\n输出:-1\n解释:不存在出现至少三次的特殊子字符串。因此返回 -1 。\n\n示例 3:\n\n输入:s = \"abcaba\"\n输出:1\n解释:出现三次的最长特殊子字符串是 \"a\" :子字符串 \"abcaba\"、\"abcaba\" 和 \"abcaba\"。\n可以证明最大长度是 1 。\n\n\n提示:\n\n3 <= s.length <= 50\ns 仅由小写英文字母组成。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumLength(self, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"aaaa\" }\nassert my_solution.maximumLength(**test_input) == 2\n\ntest_input = { \"s\": \"abcdef\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"abcaba\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"abcccccdddd\" }\nassert my_solution.maximumLength(**test_input) == 3\n\ntest_input = { \"s\": \"aaa\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"acc\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"cab\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"cad\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"cbc\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"ccc\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"dca\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"ddd\" }\nassert my_solution.maximumLength(**test_inp
|
|||
|
{"task_id": "weekly-contest-378-find-longest-special-substring-that-occurs-thrice-ii", "url": "https://leetcode.com/problems/find-longest-special-substring-that-occurs-thrice-ii", "title": "find-longest-special-substring-that-occurs-thrice-ii", "meta": {"questionId": "3266", "questionFrontendId": "2982", "title": "Find Longest Special Substring That Occurs Thrice II", "titleSlug": "find-longest-special-substring-that-occurs-thrice-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 172, "dislikes": 17, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个仅由小写英文字母组成的字符串 s 。\n如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 \"abc\" 不是特殊字符串,而字符串 \"ddd\"、\"zz\" 和 \"f\" 是特殊字符串。\n返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。\n子字符串 是字符串中的一个连续 非空 字符序列。\n\n示例 1:\n\n输入:s = \"aaaa\"\n输出:2\n解释:出现三次的最长特殊子字符串是 \"aa\" :子字符串 \"aaaa\"、\"aaaa\" 和 \"aaaa\"。\n可以证明最大长度是 2 。\n\n示例 2:\n\n输入:s = \"abcdef\"\n输出:-1\n解释:不存在出现至少三次的特殊子字符串。因此返回 -1 。\n\n示例 3:\n\n输入:s = \"abcaba\"\n输出:1\n解释:出现三次的最长特殊子字符串是 \"a\" :子字符串 \"abcaba\"、\"abcaba\" 和 \"abcaba\"。\n可以证明最大长度是 1 。\n\n\n提示:\n\n3 <= s.length <= 5 * 105\ns 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def maximumLength(self, s: str) -> int:\n ", "prompt_sft": "给你一个仅由小写英文字母组成的字符串 s 。\n如果一个字符串仅由单一字符组成,那么它被称为 特殊 字符串。例如,字符串 \"abc\" 不是特殊字符串,而字符串 \"ddd\"、\"zz\" 和 \"f\" 是特殊字符串。\n返回在 s 中出现 至少三次 的 最长特殊子字符串 的长度,如果不存在出现至少三次的特殊子字符串,则返回 -1 。\n子字符串 是字符串中的一个连续 非空 字符序列。\n\n示例 1:\n\n输入:s = \"aaaa\"\n输出:2\n解释:出现三次的最长特殊子字符串是 \"aa\" :子字符串 \"aaaa\"、\"aaaa\" 和 \"aaaa\"。\n可以证明最大长度是 2 。\n\n示例 2:\n\n输入:s = \"abcdef\"\n输出:-1\n解释:不存在出现至少三次的特殊子字符串。因此返回 -1 。\n\n示例 3:\n\n输入:s = \"abcaba\"\n输出:1\n解释:出现三次的最长特殊子字符串是 \"a\" :子字符串 \"abcaba\"、\"abcaba\" 和 \"abcaba\"。\n可以证明最大长度是 1 。\n\n\n提示:\n\n3 <= s.length <= 5 * 105\ns 仅由小写英文字母组成。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumLength(self, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"aaaa\" }\nassert my_solution.maximumLength(**test_input) == 2\n\ntest_input = { \"s\": \"abcdef\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"abcaba\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"abcccccdddd\" }\nassert my_solution.maximumLength(**test_input) == 3\n\ntest_input = { \"s\": \"acd\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"bad\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"bbc\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"ccc\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"cda\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"dab\" }\nassert my_solution.maximumLength(**test_input) == -1\n\ntest_input = { \"s\": \"ddd\" }\nassert my_solution.maximumLength(**test_input) == 1\n\ntest_input = { \"s\": \"eee\" }\nassert my_solution.maximumL
|
|||
|
{"task_id": "weekly-contest-378-palindrome-rearrangement-queries", "url": "https://leetcode.com/problems/palindrome-rearrangement-queries", "title": "palindrome-rearrangement-queries", "meta": {"questionId": "3203", "questionFrontendId": "2983", "title": "Palindrome Rearrangement Queries", "titleSlug": "palindrome-rearrangement-queries", "isPaidOnly": false, "difficulty": "Hard", "likes": 73, "dislikes": 23, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 偶数n,下标从 0开始的字符串s。\n同时给你一个下标从 0开始的二维整数数组queries,其中queries[i] = [ai, bi, ci, di]。\n对于每个查询i,你需要执行以下操作:\n\n将下标在范围0 <= ai <= bi < n / 2内的子字符串s[ai:bi]中的字符重新排列。\n将下标在范围 n / 2 <= ci <= di < n内的 子字符串s[ci:di]中的字符重新排列。\n\n对于每个查询,你的任务是判断执行操作后能否让 s变成一个 回文串 。\n每个查询与其他查询都是 独立的。\n请你返回一个下标从 0开始的数组answer,如果第i个查询执行操作后,可以将s变为一个回文串,那么answer[i] =true,否则为false。\n\n子字符串指的是一个字符串中一段连续的字符序列。\ns[x:y]表示 s中从下标 x到 y且两个端点 都包含的子字符串。\n\n\n示例 1:\n\n输入:s = \"abcabc\", queries = [[1,1,3,5],[0,2,5,5]]\n输出:[true,true]\n解释:这个例子中,有 2 个查询:\n第一个查询:\n- a0 = 1, b0 = 1, c0 = 3, d0 = 5\n- 你可以重新排列 s[1:1] => abcabc 和 s[3:5] => abcabc。\n- 为了让 s 变为回文串,s[3:5] 可以重新排列得到 => abccba 。\n- 现在 s 是一个回文串。所以 answer[0] = true 。\n第二个查询:\n- a1 = 0, b1 = 2, c1 = 5, d1 = 5.\n- 你可以重新排列 s[0:2] => abcabc 和 s[5:5] => abcabc。\n- 为了让 s 变为回文串,s[0:2] 可以重新排列得到 => cbaabc 。\n- 现在 s 是一个回文串,所以 answer[1] = true 。\n\n示例 2:\n\n输入:s = \"abbcdecbba\", queries = [[0,2,7,9]]\n输出:[false]\n解释:这个示例中,只有一个查询。\na0 = 0, b0 = 2, c0 = 7, d0 = 9.\n你可以重新排列 s[0:2] => abbcdecbba 和 s[7:9] => abbcdecbba。\n无法通过重新排列这些子字符串使 s 变为一个回文串,因为 s[3:6] 不是一个回文串。\n所以 answer[0] = false 。\n示例 3:\n\n输入:s = \"acbcab\", queries = [[1,2,4,5]]\n输出:[true]\n解释:这个示例中,只有一个查询。\na0 = 1, b0 = 2, c0 = 4, d0 = 5.\n你可以重新排列 s[1:2] => acbcab 和 s[4:5] => acbcab。\n为了让 s 变为回文串,s[1:2] 可以重新排列得到 => abccab。\n然后 s[4:5] 重新排列得到 abccba。\n现在 s 是一个回文串,所以 answer[0] = true 。\n\n提示:\n\n2 <= n == s.length <= 105\n1 <= queries.length <= 105\nqueries[i].length == 4\nai == queries[i][0], bi == queries[i][1]\nci == queries[i][2], di == queries[i][3]\n0 <= ai <= bi < n / 2\nn / 2 <= ci <= di < n \nn是一个偶数。\ns 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def canMakePalindromeQueries(self, s: str, queries: List[List[int]]) -> List[bool]:\n ", "prompt_sft": "给你一个长度为 偶数n,下标从 0开始的字符串s。\n同时给你一个下标从 0开始的二维整数数组queries,其中queries[i] = [ai, bi, ci, di]。\n对于每个查询i,你需要执行以下操作:\n\n将下标在范围0 <= ai <= bi < n / 2内的子字符串s[ai:bi]中的字符重新排列。\n将下标在范围 n / 2 <= ci <= di < n内的 子字符串s[ci:di]中的字符重新排列。\n\n对于每个查询,你的任务是判断执行操作后能否让 s变成一个 回文串 。\n每个查询与其他查询都是 独立的。\n请你返回一个下标从 0开始的数组answer,如果第i个查询执行操作后,可以将s变为一个回文串,那么answer[i] =true,否则为false。\n\n子字符串指的是一个字符串中一段连续的字符序列。\ns[x:y]表示 s中从下标 x到 y且两个端点 都包含的子字
|
|||
|
{"task_id": "weekly-contest-377-minimum-number-game", "url": "https://leetcode.com/problems/minimum-number-game", "title": "minimum-number-game", "meta": {"questionId": "3226", "questionFrontendId": "2974", "title": "Minimum Number Game", "titleSlug": "minimum-number-game", "isPaidOnly": false, "difficulty": "Easy", "likes": 38, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下:\n\n每一轮,Alice 先从 nums 中移除一个 最小 元素,然后 Bob 执行同样的操作。\n接着,Bob 会将移除的元素添加到数组 arr 中,然后 Alice 也执行同样的操作。\n游戏持续进行,直到 nums 变为空。\n\n返回结果数组 arr 。\n\n示例 1:\n\n输入:nums = [5,4,2,3]\n输出:[3,2,5,4]\n解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 3 。然后 Bob 先将 3 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [3,2] 。\n第二轮开始时,nums = [5,4] 。Alice 先移除 4 ,然后 Bob 移除 5 。接着他们都将元素添加到 arr 中,arr 变为 [3,2,5,4] 。\n\n示例 2:\n\n输入:nums = [2,5]\n输出:[5,2]\n解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 5 。然后 Bob 先将 5 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [5,2] 。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 100\nnums.length % 2 == 0\n\"\"\"\nclass Solution:\n def numberGame(self, nums: List[int]) -> List[int]:\n ", "prompt_sft": "你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下:\n\n每一轮,Alice 先从 nums 中移除一个 最小 元素,然后 Bob 执行同样的操作。\n接着,Bob 会将移除的元素添加到数组 arr 中,然后 Alice 也执行同样的操作。\n游戏持续进行,直到 nums 变为空。\n\n返回结果数组 arr 。\n\n示例 1:\n\n输入:nums = [5,4,2,3]\n输出:[3,2,5,4]\n解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 3 。然后 Bob 先将 3 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [3,2] 。\n第二轮开始时,nums = [5,4] 。Alice 先移除 4 ,然后 Bob 移除 5 。接着他们都将元素添加到 arr 中,arr 变为 [3,2,5,4] 。\n\n示例 2:\n\n输入:nums = [2,5]\n输出:[5,2]\n解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 5 。然后 Bob 先将 5 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [5,2] 。\n\n\n提示:\n\n1 <= nums.length <= 100\n1 <= nums[i] <= 100\nnums.length % 2 == 0\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberGame(self, nums: List[int]) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,4,2,3] }\nassert my_solution.numberGame(**test_input) == [3,2,5,4]\n\ntest_input = { \"nums\": [2,5] }\nassert my_solution.numberGame(**test_input) == [5,2]\n\ntest_input = { \"nums\": [4,4,3,8] }\nassert my_solution.numberGame(**test_input) == [4,3,8,4]\n\ntest_input = { \"nums\": [2,5,3,8] }\nassert my_solution.numberGame(**test_input) == [3,2,8,5]\n\ntest_input = { \"nums\": [2,7,9,6,4,6] }\nassert my_solution.numberGame(**test_input) == [4,2,6,6,9,7]\n\ntest_input = { \"nums\": [18,26,37,46,13,33,39,1,37,16] }\nassert my_solution.numberGame(**test_input) == [13,1,18,16,33,26,37,37,46,39]\n\ntest_input = { \"nums\": [17,2,4,11,14,18] }\nassert my_solution.numberGame(**test_input) == [4,2,14,11,18,17]\n\ntest_input = { \"nums\": [20,30,12,3,11,17,32,12] }\nassert my_solution.numberGame(**test_input) == [11,3,12,12,20,17,32,30]\n\ntest_input = { \"nums\": [9,32,6,11,11,39,18,29,44,29] }\nassert my_solution.numberGame(**test_inp
|
|||
|
{"task_id": "weekly-contest-377-maximum-square-area-by-removing-fences-from-a-field", "url": "https://leetcode.com/problems/maximum-square-area-by-removing-fences-from-a-field", "title": "maximum-square-area-by-removing-fences-from-a-field", "meta": {"questionId": "3250", "questionFrontendId": "2975", "title": "Maximum Square Area by Removing Fences From a Field", "titleSlug": "maximum-square-area-by-removing-fences-from-a-field", "isPaidOnly": false, "difficulty": "Medium", "likes": 67, "dislikes": 68, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n有一个大型的 (m - 1) x (n - 1) 矩形田地,其两个对角分别是 (1, 1) 和 (m, n) ,田地内部有一些水平栅栏和垂直栅栏,分别由数组 hFences 和 vFences 给出。\n水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n),垂直栅栏为坐标 (1, vFences[i]) 到 (m, vFences[i]) 。\n返回通过 移除 一些栅栏(可能不移除)所能形成的最大面积的 正方形 田地的面积,或者如果无法形成正方形田地则返回 -1。\n由于答案可能很大,所以请返回结果对 109 + 7 取余 后的值。\n注意:田地外围两个水平栅栏(坐标 (1, 1) 到 (1, n) 和坐标 (m, 1) 到 (m, n) )以及两个垂直栅栏(坐标 (1, 1) 到 (m, 1) 和坐标 (1, n) 到 (m, n) )所包围。这些栅栏 不能 被移除。\n\n示例 1:\n\n\n输入:m = 4, n = 3, hFences = [2,3], vFences = [2]\n输出:4\n解释:移除位于 2 的水平栅栏和位于 2 的垂直栅栏将得到一个面积为 4 的正方形田地。\n\n示例 2:\n\n\n输入:m = 6, n = 7, hFences = [2], vFences = [4]\n输出:-1\n解释:可以证明无法通过移除栅栏形成正方形田地。\n\n\n提示:\n\n3 <= m, n <= 109\n1 <= hFences.length, vFences.length <= 600\n1 < hFences[i] < m\n1 < vFences[i] < n\nhFences 和 vFences 中的元素是唯一的。\n\"\"\"\nclass Solution:\n def maximizeSquareArea(self, m: int, n: int, hFences: List[int], vFences: List[int]) -> int:\n ", "prompt_sft": "有一个大型的 (m - 1) x (n - 1) 矩形田地,其两个对角分别是 (1, 1) 和 (m, n) ,田地内部有一些水平栅栏和垂直栅栏,分别由数组 hFences 和 vFences 给出。\n水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n),垂直栅栏为坐标 (1, vFences[i]) 到 (m, vFences[i]) 。\n返回通过 移除 一些栅栏(可能不移除)所能形成的最大面积的 正方形 田地的面积,或者如果无法形成正方形田地则返回 -1。\n由于答案可能很大,所以请返回结果对 109 + 7 取余 后的值。\n注意:田地外围两个水平栅栏(坐标 (1, 1) 到 (1, n) 和坐标 (m, 1) 到 (m, n) )以及两个垂直栅栏(坐标 (1, 1) 到 (m, 1) 和坐标 (1, n) 到 (m, n) )所包围。这些栅栏 不能 被移除。\n\n示例 1:\n\n\n输入:m = 4, n = 3, hFences = [2,3], vFences = [2]\n输出:4\n解释:移除位于 2 的水平栅栏和位于 2 的垂直栅栏将得到一个面积为 4 的正方形田地。\n\n示例 2:\n\n\n输入:m = 6, n = 7, hFences = [2], vFences = [4]\n输出:-1\n解释:可以证明无法通过移除栅栏形成正方形田地。\n\n\n提示:\n\n3 <= m, n <= 109\n1 <= hFences.length, vFences.length <= 600\n1 < hFences[i] < m\n1 < vFences[i] < n\nhFences 和 vFences 中的元素是唯一的。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximizeSquareArea(self, m: int, n: int, hFences: List[int], vFences: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"m\": 4, \"n\": 3, \"hFences\": [2,3], \"vFences\": [2] }\nassert my_solution.maximizeSquareArea(**test_input) == 4\n\ntest_input = { \"m\": 6, \"n\": 7, \"hFences\": [2], \"vFences\": [4] }\nassert my_solution.maximizeSquareArea(**test_input) == -1\n\ntest_input = { \"m\": 4, \"n\": 4, \"hFences\": [2], \"vFences\": [2,3] }\nassert my_solution.maximizeSquareArea(**test_input) == 9\n\ntest_input = { \"m\": 8, \"n\": 5, \"hFences\": [5,4], \"vFences\": [4] }\nassert my_solution.maximizeSquar
|
|||
|
{"task_id": "weekly-contest-377-minimum-cost-to-convert-string-i", "url": "https://leetcode.com/problems/minimum-cost-to-convert-string-i", "title": "minimum-cost-to-convert-string-i", "meta": {"questionId": "3235", "questionFrontendId": "2976", "title": "Minimum Cost to Convert String I", "titleSlug": "minimum-cost-to-convert-string-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 93, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的字符串 source 和 target ,它们的长度均为 n 并且由 小写 英文字母组成。\n另给你两个下标从 0 开始的字符数组 original 和 changed ,以及一个整数数组 cost ,其中 cost[i] 代表将字符 original[i] 更改为字符 changed[i] 的成本。\n你从字符串 source 开始。在一次操作中,如果 存在 任意 下标 j 满足 cost[j] == z 、original[j] == x 以及 changed[j] == y 。你就可以选择字符串中的一个字符 x 并以 z 的成本将其更改为字符 y 。\n返回将字符串 source 转换为字符串 target 所需的 最小 成本。如果不可能完成转换,则返回 -1 。\n注意,可能存在下标 i 、j 使得 original[j] == original[i] 且 changed[j] == changed[i] 。\n\n示例 1:\n\n输入:source = \"abcd\", target = \"acbe\", original = [\"a\",\"b\",\"c\",\"c\",\"e\",\"d\"], changed = [\"b\",\"c\",\"b\",\"e\",\"b\",\"e\"], cost = [2,5,5,1,2,20]\n输出:28\n解释:将字符串 \"abcd\" 转换为字符串 \"acbe\" :\n- 更改下标 1 处的值 'b' 为 'c' ,成本为 5 。\n- 更改下标 2 处的值 'c' 为 'e' ,成本为 1 。\n- 更改下标 2 处的值 'e' 为 'b' ,成本为 2 。\n- 更改下标 3 处的值 'd' 为 'e' ,成本为 20 。\n产生的总成本是 5 + 1 + 2 + 20 = 28 。\n可以证明这是可能的最小成本。\n\n示例 2:\n\n输入:source = \"aaaa\", target = \"bbbb\", original = [\"a\",\"c\"], changed = [\"c\",\"b\"], cost = [1,2]\n输出:12\n解释:要将字符 'a' 更改为 'b':\n- 将字符 'a' 更改为 'c',成本为 1 \n- 将字符 'c' 更改为 'b',成本为 2 \n产生的总成本是 1 + 2 = 3。\n将所有 'a' 更改为 'b',产生的总成本是 3 * 4 = 12 。\n\n示例 3:\n\n输入:source = \"abcd\", target = \"abce\", original = [\"a\"], changed = [\"e\"], cost = [10000]\n输出:-1\n解释:无法将 source 字符串转换为 target 字符串,因为下标 3 处的值无法从 'd' 更改为 'e' 。\n\n\n提示:\n\n1 <= source.length == target.length <= 105\nsource、target 均由小写英文字母组成\n1 <= cost.length== original.length == changed.length <= 2000\noriginal[i]、changed[i] 是小写英文字母\n1 <= cost[i] <= 106\noriginal[i] != changed[i]\n\"\"\"\nclass Solution:\n def minimumCost(self, source: str, target: str, original: List[str], changed: List[str], cost: List[int]) -> int:\n ", "prompt_sft": "给你两个下标从 0 开始的字符串 source 和 target ,它们的长度均为 n 并且由 小写 英文字母组成。\n另给你两个下标从 0 开始的字符数组 original 和 changed ,以及一个整数数组 cost ,其中 cost[i] 代表将字符 original[i] 更改为字符 changed[i] 的成本。\n你从字符串 source 开始。在一次操作中,如果 存在 任意 下标 j 满足 cost[j] == z 、original[j] == x 以及 changed[j] == y 。你就可以选择字符串中的一个字符 x 并以 z 的成本将其更改为字符 y 。\n返回将字符串 source 转换为字符串 target 所需的 最小 成本。如果不可能完成转换,则返回 -1 。\n注意,可能存在下标 i 、j 使得 original[j] == original[i] 且 changed[j] == changed[i] 。\n\n示例 1:\n\n输入:source = \"abcd\", target = \"acbe\", original = [\"a\",\"b\",\"c\",\"c\",\"e\",\"d\"], changed = [\"b\",\"c\",\"b\",\"e\",\"b\",\"e\"], cost = [2,5,5,1,2,20]\n输出:28\n解释:将字符串 \"abcd\" 转换为字符串 \"acbe\" :\n- 更改下标 1 处的值 'b' 为 'c' ,成本为 5 。\n- 更改下标 2 处的值 'c' 为 'e' ,成本为 1 。\n- 更
|
|||
|
{"task_id": "weekly-contest-377-minimum-cost-to-convert-string-ii", "url": "https://leetcode.com/problems/minimum-cost-to-convert-string-ii", "title": "minimum-cost-to-convert-string-ii", "meta": {"questionId": "3238", "questionFrontendId": "2977", "title": "Minimum Cost to Convert String II", "titleSlug": "minimum-cost-to-convert-string-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 40, "dislikes": 36, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的字符串 source 和 target ,它们的长度均为 n 并且由 小写 英文字母组成。\n另给你两个下标从 0 开始的字符串数组 original 和 changed ,以及一个整数数组 cost ,其中 cost[i] 代表将字符串 original[i] 更改为字符串 changed[i] 的成本。\n你从字符串 source 开始。在一次操作中,如果 存在 任意 下标 j 满足 cost[j] == z 、original[j] == x 以及 changed[j] == y ,你就可以选择字符串中的 子串 x 并以 z 的成本将其更改为 y 。 你可以执行 任意数量 的操作,但是任两次操作必须满足 以下两个 条件 之一 :\n\n在两次操作中选择的子串分别是 source[a..b] 和 source[c..d] ,满足 b < c 或 d < a 。换句话说,两次操作中选择的下标 不相交 。\n在两次操作中选择的子串分别是 source[a..b] 和 source[c..d] ,满足 a == c 且 b == d 。换句话说,两次操作中选择的下标 相同 。\n\n返回将字符串 source 转换为字符串 target 所需的 最小 成本。如果不可能完成转换,则返回 -1 。\n注意,可能存在下标 i 、j 使得 original[j] == original[i] 且 changed[j] == changed[i] 。\n\n示例 1:\n\n输入:source = \"abcd\", target = \"acbe\", original = [\"a\",\"b\",\"c\",\"c\",\"e\",\"d\"], changed = [\"b\",\"c\",\"b\",\"e\",\"b\",\"e\"], cost = [2,5,5,1,2,20]\n输出:28\n解释:将 \"abcd\" 转换为 \"acbe\",执行以下操作:\n- 将子串 source[1..1] 从 \"b\" 改为 \"c\" ,成本为 5 。\n- 将子串 source[2..2] 从 \"c\" 改为 \"e\" ,成本为 1 。\n- 将子串 source[2..2] 从 \"e\" 改为 \"b\" ,成本为 2 。\n- 将子串 source[3..3] 从 \"d\" 改为 \"e\" ,成本为 20 。\n产生的总成本是 5 + 1 + 2 + 20 = 28 。 \n可以证明这是可能的最小成本。\n\n示例 2:\n\n输入:source = \"abcdefgh\", target = \"acdeeghh\", original = [\"bcd\",\"fgh\",\"thh\"], changed = [\"cde\",\"thh\",\"ghh\"], cost = [1,3,5]\n输出:9\n解释:将 \"abcdefgh\" 转换为 \"acdeeghh\",执行以下操作:\n- 将子串 source[1..3] 从 \"bcd\" 改为 \"cde\" ,成本为 1 。\n- 将子串 source[5..7] 从 \"fgh\" 改为 \"thh\" ,成本为 3 。可以执行此操作,因为下标 [5,7] 与第一次操作选中的下标不相交。\n- 将子串 source[5..7] 从 \"thh\" 改为 \"ghh\" ,成本为 5 。可以执行此操作,因为下标 [5,7] 与第一次操作选中的下标不相交,且与第二次操作选中的下标相同。\n产生的总成本是 1 + 3 + 5 = 9 。\n可以证明这是可能的最小成本。\n\n示例 3:\n\n输入:source = \"abcdefgh\", target = \"addddddd\", original = [\"bcd\",\"defgh\"], changed = [\"ddd\",\"ddddd\"], cost = [100,1578]\n输出:-1\n解释:无法将 \"abcdefgh\" 转换为 \"addddddd\" 。\n如果选择子串 source[1..3] 执行第一次操作,以将 \"abcdefgh\" 改为 \"adddefgh\" ,你无法选择子串 source[3..7] 执行第二次操作,因为两次操作有一个共用下标 3 。\n如果选择子串 source[3..7] 执行第一次操作,以将 \"abcdefgh\" 改为 \"abcddddd\" ,你无法选择子串 source[1..3] 执行第二次操作,因为两次操作有一个共用下标 3 。\n\n\n提示:\n\n1 <= source.length == target.length <= 1000\nsource、target 均由小写英文字母组成\n1 <= cost.length == original.length == changed.length <= 100\n1 <= original[i].length == changed[i].length <= source.length\noriginal[i]、changed[i] 均由小写英文字母组成\noriginal[i] != changed[i]\n1 <= cost[i] <= 106\n\"\"\"\nclass Solution:\n
|
|||
|
{"task_id": "biweekly-contest-120-count-the-number-of-incremovable-subarrays-i", "url": "https://leetcode.com/problems/count-the-number-of-incremovable-subarrays-i", "title": "count-the-number-of-incremovable-subarrays-i", "meta": {"questionId": "3252", "questionFrontendId": "2970", "title": "Count the Number of Incremovable Subarrays I", "titleSlug": "count-the-number-of-incremovable-subarrays-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 38, "dislikes": 49, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的 正整数数组nums。\n如果 nums的一个子数组满足:移除这个子数组后剩余元素 严格递增,那么我们称这个子数组为 移除递增子数组。比方说,[5, 3, 4, 6, 7]中的 [3, 4]是一个移除递增子数组,因为移除该子数组后,[5, 3, 4, 6, 7]变为[5, 6, 7],是严格递增的。\n请你返回 nums中 移除递增子数组的总数目。\n注意,剩余元素为空的数组也视为是递增的。\n子数组 指的是一个数组中一段连续的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:10\n解释:10 个移除递增子数组分别为:[1], [2], [3], [4], [1,2], [2,3], [3,4], [1,2,3], [2,3,4] 和 [1,2,3,4]。移除任意一个子数组后,剩余元素都是递增的。注意,空数组不是移除递增子数组。\n\n示例 2:\n\n输入:nums = [6,5,7,8]\n输出:7\n解释:7个移除递增子数组分别为:[5], [6], [5,7], [6,5], [5,7,8], [6,5,7] 和 [6,5,7,8] 。\nnums 中只有这 7 个移除递增子数组。\n\n示例 3:\n\n输入:nums = [8,7,6,6]\n输出:3\n解释:3 个移除递增子数组分别为:[8,7,6], [7,6,6] 和 [8,7,6,6] 。注意 [8,7] 不是移除递增子数组因为移除 [8,7] 后 nums 变为 [6,6] ,它不是严格递增的。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 50\n\"\"\"\nclass Solution:\n def incremovableSubarrayCount(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的 正整数数组nums。\n如果 nums的一个子数组满足:移除这个子数组后剩余元素 严格递增,那么我们称这个子数组为 移除递增子数组。比方说,[5, 3, 4, 6, 7]中的 [3, 4]是一个移除递增子数组,因为移除该子数组后,[5, 3, 4, 6, 7]变为[5, 6, 7],是严格递增的。\n请你返回 nums中 移除递增子数组的总数目。\n注意,剩余元素为空的数组也视为是递增的。\n子数组 指的是一个数组中一段连续的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:10\n解释:10 个移除递增子数组分别为:[1], [2], [3], [4], [1,2], [2,3], [3,4], [1,2,3], [2,3,4] 和 [1,2,3,4]。移除任意一个子数组后,剩余元素都是递增的。注意,空数组不是移除递增子数组。\n\n示例 2:\n\n输入:nums = [6,5,7,8]\n输出:7\n解释:7个移除递增子数组分别为:[5], [6], [5,7], [6,5], [5,7,8], [6,5,7] 和 [6,5,7,8] 。\nnums 中只有这 7 个移除递增子数组。\n\n示例 3:\n\n输入:nums = [8,7,6,6]\n输出:3\n解释:3 个移除递增子数组分别为:[8,7,6], [7,6,6] 和 [8,7,6,6] 。注意 [8,7] 不是移除递增子数组因为移除 [8,7] 后 nums 变为 [6,6] ,它不是严格递增的。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def incremovableSubarrayCount(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 10\n\ntest_input = { \"nums\": [6,5,7,8] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 7\n\ntest_input = { \"nums\": [8,7,6,6] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 3\n\ntest_input = { \"nums\": [1] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 1\n\ntest_input = { \"nums\": [2] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 1\n\ntest_inp
|
|||
|
{"task_id": "biweekly-contest-120-find-polygon-with-the-largest-perimeter", "url": "https://leetcode.com/problems/find-polygon-with-the-largest-perimeter", "title": "find-polygon-with-the-largest-perimeter", "meta": {"questionId": "3262", "questionFrontendId": "2971", "title": "Find Polygon With the Largest Perimeter", "titleSlug": "find-polygon-with-the-largest-perimeter", "isPaidOnly": false, "difficulty": "Medium", "likes": 53, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为n的正整数数组nums。\n多边形指的是一个至少有 3条边的封闭二维图形。多边形的 最长边一定 小于所有其他边长度之和。\n如果你有k(k >= 3)个正数a1,a2,a3, ...,ak 满足a1 <= a2 <= a3 <= ... <= ak 且 a1 + a2 + a3 + ... + ak-1 > ak,那么 一定存在一个k条边的多边形,每条边的长度分别为a1,a2,a3,...,ak。\n一个多边形的 周长指的是它所有边之和。\n请你返回从 nums中可以构造的 多边形的 最大周长。如果不能构造出任何多边形,请你返回 -1。\n\n示例 1:\n\n输入:nums = [5,5,5]\n输出:15\n解释:nums 中唯一可以构造的多边形为三角形,每条边的长度分别为 5 ,5 和 5 ,周长为 5 + 5 + 5 = 15 。\n\n示例 2:\n\n输入:nums = [1,12,1,2,5,50,3]\n输出:12\n解释:最大周长多边形为五边形,每条边的长度分别为 1 ,1 ,2 ,3 和 5 ,周长为 1 + 1 + 2 + 3 + 5 = 12 。\n我们无法构造一个包含变长为 12 或者 50 的多边形,因为其他边之和没法大于两者中的任何一个。\n所以最大周长为 12 。\n\n示例 3:\n\n输入:nums = [5,5,50]\n输出:-1\n解释:无法构造任何多边形,因为多边形至少要有 3 条边且 50 > 5 + 5 。\n\n\n提示:\n\n3 <= n <= 105\n1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def largestPerimeter(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为n的正整数数组nums。\n多边形指的是一个至少有 3条边的封闭二维图形。多边形的 最长边一定 小于所有其他边长度之和。\n如果你有k(k >= 3)个正数a1,a2,a3, ...,ak 满足a1 <= a2 <= a3 <= ... <= ak 且 a1 + a2 + a3 + ... + ak-1 > ak,那么 一定存在一个k条边的多边形,每条边的长度分别为a1,a2,a3,...,ak。\n一个多边形的 周长指的是它所有边之和。\n请你返回从 nums中可以构造的 多边形的 最大周长。如果不能构造出任何多边形,请你返回 -1。\n\n示例 1:\n\n输入:nums = [5,5,5]\n输出:15\n解释:nums 中唯一可以构造的多边形为三角形,每条边的长度分别为 5 ,5 和 5 ,周长为 5 + 5 + 5 = 15 。\n\n示例 2:\n\n输入:nums = [1,12,1,2,5,50,3]\n输出:12\n解释:最大周长多边形为五边形,每条边的长度分别为 1 ,1 ,2 ,3 和 5 ,周长为 1 + 1 + 2 + 3 + 5 = 12 。\n我们无法构造一个包含变长为 12 或者 50 的多边形,因为其他边之和没法大于两者中的任何一个。\n所以最大周长为 12 。\n\n示例 3:\n\n输入:nums = [5,5,50]\n输出:-1\n解释:无法构造任何多边形,因为多边形至少要有 3 条边且 50 > 5 + 5 。\n\n\n提示:\n\n3 <= n <= 105\n1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def largestPerimeter(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,5,5] }\nassert my_solution.largestPerimeter(**test_input) == 15\n\ntest_input = { \"nums\": [1,12,1,2,5,50,3] }\nassert my_solution.largestPerimeter(**test_input) == 12\n\ntest_input = { \"nums\": [5,5,50] }\nassert my_solution.largestPerimeter(**test_input) == -1\n\ntest_input = { \"nums\": [1,1,1] }\nassert my_solution.largestPerimeter(**test_input) == 3\n\ntest_input = { \"nums\": [1,1,2] }\nassert my_solution.largestPerimeter(**test_input) == -1\n\ntest_input = { \"nums\": [1,1,3] }\nassert my_solution.largestPerimeter(**test_input) == -1\n\ntest_input =
|
|||
|
{"task_id": "biweekly-contest-120-count-the-number-of-incremovable-subarrays-ii", "url": "https://leetcode.com/problems/count-the-number-of-incremovable-subarrays-ii", "title": "count-the-number-of-incremovable-subarrays-ii", "meta": {"questionId": "3248", "questionFrontendId": "2972", "title": "Count the Number of Incremovable Subarrays II", "titleSlug": "count-the-number-of-incremovable-subarrays-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 97, "dislikes": 15, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的 正整数数组nums。\n如果 nums的一个子数组满足:移除这个子数组后剩余元素 严格递增,那么我们称这个子数组为 移除递增子数组。比方说,[5, 3, 4, 6, 7]中的 [3, 4]是一个移除递增子数组,因为移除该子数组后,[5, 3, 4, 6, 7]变为[5, 6, 7],是严格递增的。\n请你返回 nums中 移除递增子数组的总数目。\n注意,剩余元素为空的数组也视为是递增的。\n子数组 指的是一个数组中一段连续的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:10\n解释:10 个移除递增子数组分别为:[1], [2], [3], [4], [1,2], [2,3], [3,4], [1,2,3], [2,3,4] 和 [1,2,3,4]。移除任意一个子数组后,剩余元素都是递增的。注意,空数组不是移除递增子数组。\n\n示例 2:\n\n输入:nums = [6,5,7,8]\n输出:7\n解释:7个移除递增子数组分别为:[5], [6], [5,7], [6,5], [5,7,8], [6,5,7] 和 [6,5,7,8] 。\nnums 中只有这 7 个移除递增子数组。\n\n示例 3:\n\n输入:nums = [8,7,6,6]\n输出:3\n解释:3 个移除递增子数组分别为:[8,7,6], [7,6,6] 和 [8,7,6,6] 。注意 [8,7] 不是移除递增子数组因为移除 [8,7] 后 nums 变为 [6,6] ,它不是严格递增的。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def incremovableSubarrayCount(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的 正整数数组nums。\n如果 nums的一个子数组满足:移除这个子数组后剩余元素 严格递增,那么我们称这个子数组为 移除递增子数组。比方说,[5, 3, 4, 6, 7]中的 [3, 4]是一个移除递增子数组,因为移除该子数组后,[5, 3, 4, 6, 7]变为[5, 6, 7],是严格递增的。\n请你返回 nums中 移除递增子数组的总数目。\n注意,剩余元素为空的数组也视为是递增的。\n子数组 指的是一个数组中一段连续的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:10\n解释:10 个移除递增子数组分别为:[1], [2], [3], [4], [1,2], [2,3], [3,4], [1,2,3], [2,3,4] 和 [1,2,3,4]。移除任意一个子数组后,剩余元素都是递增的。注意,空数组不是移除递增子数组。\n\n示例 2:\n\n输入:nums = [6,5,7,8]\n输出:7\n解释:7个移除递增子数组分别为:[5], [6], [5,7], [6,5], [5,7,8], [6,5,7] 和 [6,5,7,8] 。\nnums 中只有这 7 个移除递增子数组。\n\n示例 3:\n\n输入:nums = [8,7,6,6]\n输出:3\n解释:3 个移除递增子数组分别为:[8,7,6], [7,6,6] 和 [8,7,6,6] 。注意 [8,7] 不是移除递增子数组因为移除 [8,7] 后 nums 变为 [6,6] ,它不是严格递增的。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def incremovableSubarrayCount(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 10\n\ntest_input = { \"nums\": [6,5,7,8] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 7\n\ntest_input = { \"nums\": [8,7,6,6] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 3\n\ntest_input = { \"nums\": [1] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 1\n\ntest_input = { \"nums\": [2] }\nassert my_solution.incremovableSubarrayCount(**test_input) == 1\n\
|
|||
|
{"task_id": "biweekly-contest-120-find-number-of-coins-to-place-in-tree-nodes", "url": "https://leetcode.com/problems/find-number-of-coins-to-place-in-tree-nodes", "title": "find-number-of-coins-to-place-in-tree-nodes", "meta": {"questionId": "3218", "questionFrontendId": "2973", "title": "Find Number of Coins to Place in Tree Nodes", "titleSlug": "find-number-of-coins-to-place-in-tree-nodes", "isPaidOnly": false, "difficulty": "Hard", "likes": 67, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一棵n个节点的无向树,节点编号为0到n - 1,树的根节点在节点0处。同时给你一个长度为 n - 1的二维整数数组edges,其中edges[i] = [ai, bi]表示树中节点ai 和bi之间有一条边。\n给你一个长度为 n下标从 0开始的整数数组cost,其中cost[i]是第 i个节点的 开销。\n你需要在树中每个节点都放置金币,在节点 i处的金币数目计算方法如下:\n\n如果节点 i对应的子树中的节点数目小于3,那么放1个金币。\n否则,计算节点 i 对应的子树内 3 个不同节点的开销乘积的 最大值 ,并在节点 i 处放置对应数目的金币。如果最大乘积是 负数,那么放置 0个金币。\n\n请你返回一个长度为 n的数组coin,coin[i]是节点i处的金币数目。\n\n示例 1:\n\n\n输入:edges = [[0,1],[0,2],[0,3],[0,4],[0,5]], cost = [1,2,3,4,5,6]\n输出:[120,1,1,1,1,1]\n解释:在节点 0 处放置 6 * 5 * 4 = 120 个金币。所有其他节点都是叶子节点,子树中只有 1 个节点,所以其他每个节点都放 1 个金币。\n\n示例 2:\n\n\n输入:edges = [[0,1],[0,2],[1,3],[1,4],[1,5],[2,6],[2,7],[2,8]], cost = [1,4,2,3,5,7,8,-4,2]\n输出:[280,140,32,1,1,1,1,1,1]\n解释:每个节点放置的金币数分别为:\n- 节点 0 处放置 8 * 7 * 5 = 280 个金币。\n- 节点 1 处放置 7 * 5 * 4 = 140 个金币。\n- 节点 2 处放置 8 * 2 * 2 = 32 个金币。\n- 其他节点都是叶子节点,子树内节点数目为 1 ,所以其他每个节点都放 1 个金币。\n\n示例 3:\n\n\n输入:edges = [[0,1],[0,2]], cost = [1,2,-2]\n输出:[0,1,1]\n解释:节点 1 和 2 都是叶子节点,子树内节点数目为 1 ,各放置 1 个金币。节点 0 处唯一的开销乘积是 2 * 1 * -2 = -4 。所以在节点 0 处放置 0 个金币。\n\n\n提示:\n\n2 <= n <= 2 * 104\nedges.length == n - 1\nedges[i].length == 2\n0 <= ai, bi < n\ncost.length == n\n1 <= |cost[i]| <= 104\nedges一定是一棵合法的树。\n\"\"\"\nclass Solution:\n def placedCoins(self, edges: List[List[int]], cost: List[int]) -> List[int]:\n ", "prompt_sft": "给你一棵n个节点的无向树,节点编号为0到n - 1,树的根节点在节点0处。同时给你一个长度为 n - 1的二维整数数组edges,其中edges[i] = [ai, bi]表示树中节点ai 和bi之间有一条边。\n给你一个长度为 n下标从 0开始的整数数组cost,其中cost[i]是第 i个节点的 开销。\n你需要在树中每个节点都放置金币,在节点 i处的金币数目计算方法如下:\n\n如果节点 i对应的子树中的节点数目小于3,那么放1个金币。\n否则,计算节点 i 对应的子树内 3 个不同节点的开销乘积的 最大值 ,并在节点 i 处放置对应数目的金币。如果最大乘积是 负数,那么放置 0个金币。\n\n请你返回一个长度为 n的数组coin,coin[i]是节点i处的金币数目。\n\n示例 1:\n\n\n输入:edges = [[0,1],[0,2],[0,3],[0,4],[0,5]], cost = [1,2,3,4,5,6]\n输出:[120,1,1,1,1,1]\n解释:在节点 0 处放置 6 * 5 * 4 = 120 个金币。所有其他节点都是叶子节点,子树中只有 1 个节点,所以其他每个节点都放 1 个金币。\n\n示例 2:\n\n\n输入:edges = [[0,1],[0,2],[1,3],[1,4],[1,5],[2,6],[2,7],[2,8]], cost = [1,4,2,3,5,7,8,-4,2]\n输出:[280,140,32,1,1,1,1,1,1]\n解释:每个节点放置的金币数分别为:\n- 节点 0 处放置 8 * 7 * 5 = 280 个金币。\n- 节点 1 处放置 7 * 5 * 4 = 140 个金币。\n- 节点 2
|
|||
|
{"task_id": "weekly-contest-376-find-missing-and-repeated-values", "url": "https://leetcode.com/problems/find-missing-and-repeated-values", "title": "find-missing-and-repeated-values", "meta": {"questionId": "3227", "questionFrontendId": "2965", "title": "Find Missing and Repeated Values", "titleSlug": "find-missing-and-repeated-values", "isPaidOnly": false, "difficulty": "Easy", "likes": 90, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。\n任务是找出重复的数字a 和缺失的数字 b 。\n返回一个下标从 0 开始、长度为 2 的整数数组 ans ,其中 ans[0] 等于 a ,ans[1] 等于 b 。\n\n示例 1:\n\n输入:grid = [[1,3],[2,2]]\n输出:[2,4]\n解释:数字 2 重复,数字 4 缺失,所以答案是 [2,4] 。\n\n示例 2:\n\n输入:grid = [[9,1,7],[8,9,2],[3,4,6]]\n输出:[9,5]\n解释:数字 9 重复,数字 5 缺失,所以答案是 [9,5] 。\n\n\n提示:\n\n2 <= n == grid.length == grid[i].length <= 50\n1 <= grid[i][j] <= n * n\n对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的任何成员都不相等。\n对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的两个成员相等。\n除上述的两个之外,对于所有满足1 <= x <= n * n 的 x ,都恰好存在一对 i, j 满足 0 <= i, j <= n - 1 且 grid[i][j] == x 。\n\"\"\"\nclass Solution:\n def findMissingAndRepeatedValues(self, grid: List[List[int]]) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。\n任务是找出重复的数字a 和缺失的数字 b 。\n返回一个下标从 0 开始、长度为 2 的整数数组 ans ,其中 ans[0] 等于 a ,ans[1] 等于 b 。\n\n示例 1:\n\n输入:grid = [[1,3],[2,2]]\n输出:[2,4]\n解释:数字 2 重复,数字 4 缺失,所以答案是 [2,4] 。\n\n示例 2:\n\n输入:grid = [[9,1,7],[8,9,2],[3,4,6]]\n输出:[9,5]\n解释:数字 9 重复,数字 5 缺失,所以答案是 [9,5] 。\n\n\n提示:\n\n2 <= n == grid.length == grid[i].length <= 50\n1 <= grid[i][j] <= n * n\n对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的任何成员都不相等。\n对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的两个成员相等。\n除上述的两个之外,对于所有满足1 <= x <= n * n 的 x ,都恰好存在一对 i, j 满足 0 <= i, j <= n - 1 且 grid[i][j] == x 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findMissingAndRepeatedValues(self, grid: List[List[int]]) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"grid\": [[1,3],[2,2]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [2,4]\n\ntest_input = { \"grid\": [[9,1,7],[8,9,2],[3,4,6]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [9,5]\n\ntest_input = { \"grid\": [[1,1],[3,2]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [1,4]\n\ntest_input = { \"grid\": [[1,1],[3,4]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [1,2]\n\ntest_input = { \"grid\": [[1,2],[1,3]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [1,4]\n\ntest_input = { \"grid\": [[1,2],[1,4]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [1,3]\n\ntest_input = { \"grid\": [[1,2],[3,3]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [3,4]\n\ntest_input = { \"grid\": [[1,2],[4,1]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [1,3]\n\ntest_input = { \"grid\": [[1,2],[4,2]] }\nassert my_solution.findMissingAndRepeatedValues(**test_input) == [2,3]\n\ntest_input = { \"grid\":
|
|||
|
{"task_id": "weekly-contest-376-divide-array-into-arrays-with-max-difference", "url": "https://leetcode.com/problems/divide-array-into-arrays-with-max-difference", "title": "divide-array-into-arrays-with-max-difference", "meta": {"questionId": "3241", "questionFrontendId": "2966", "title": "Divide Array Into Arrays With Max Difference", "titleSlug": "divide-array-into-arrays-with-max-difference", "isPaidOnly": false, "difficulty": "Medium", "likes": 95, "dislikes": 20, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 的整数数组 nums,以及一个正整数 k 。\n将这个数组划分为一个或多个长度为 3 的子数组,并满足以下条件:\n\nnums 中的 每个 元素都必须 恰好 存在于某个子数组中。\n子数组中 任意 两个元素的差必须小于或等于 k 。\n\n返回一个 二维数组 ,包含所有的子数组。如果不可能满足条件,就返回一个空数组。如果有多个答案,返回 任意一个 即可。\n\n示例 1:\n\n输入:nums = [1,3,4,8,7,9,3,5,1], k = 2\n输出:[[1,1,3],[3,4,5],[7,8,9]]\n解释:可以将数组划分为以下子数组:[1,1,3],[3,4,5] 和 [7,8,9] 。\n每个子数组中任意两个元素的差都小于或等于 2 。\n注意,元素的顺序并不重要。\n\n示例 2:\n\n输入:nums = [1,3,3,2,7,3], k = 3\n输出:[]\n解释:无法划分数组满足所有条件。\n\n\n提示:\n\nn == nums.length\n1 <= n <= 105\nn 是 3 的倍数\n1 <= nums[i] <= 105\n1 <= k <= 105\n\"\"\"\nclass Solution:\n def divideArray(self, nums: List[int], k: int) -> List[List[int]]:\n ", "prompt_sft": "给你一个长度为 n 的整数数组 nums,以及一个正整数 k 。\n将这个数组划分为一个或多个长度为 3 的子数组,并满足以下条件:\n\nnums 中的 每个 元素都必须 恰好 存在于某个子数组中。\n子数组中 任意 两个元素的差必须小于或等于 k 。\n\n返回一个 二维数组 ,包含所有的子数组。如果不可能满足条件,就返回一个空数组。如果有多个答案,返回 任意一个 即可。\n\n示例 1:\n\n输入:nums = [1,3,4,8,7,9,3,5,1], k = 2\n输出:[[1,1,3],[3,4,5],[7,8,9]]\n解释:可以将数组划分为以下子数组:[1,1,3],[3,4,5] 和 [7,8,9] 。\n每个子数组中任意两个元素的差都小于或等于 2 。\n注意,元素的顺序并不重要。\n\n示例 2:\n\n输入:nums = [1,3,3,2,7,3], k = 3\n输出:[]\n解释:无法划分数组满足所有条件。\n\n\n提示:\n\nn == nums.length\n1 <= n <= 105\nn 是 3 的倍数\n1 <= nums[i] <= 105\n1 <= k <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def divideArray(self, nums: List[int], k: int) -> List[List[int]]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,4,8,7,9,3,5,1], \"k\": 2 }\nassert my_solution.divideArray(**test_input) == [[1,1,3],[3,4,5],[7,8,9]]\n\ntest_input = { \"nums\": [1,3,3,2,7,3], \"k\": 3 }\nassert my_solution.divideArray(**test_input) == []\n\ntest_input = { \"nums\": [4,2,9,8,2,12,7,12,10,5,8,5,5,7,9,2,5,11], \"k\": 14 }\nassert my_solution.divideArray(**test_input) == [[2,2,2],[4,5,5],[5,5,7],[7,8,8],[9,9,10],[11,12,12]]\n\ntest_input = { \"nums\": [33,26,4,18,16,24,24,15,8,18,34,20,24,16,3], \"k\": 16 }\nassert my_solution.divideArray(**test_input) == [[3,4,8],[15,16,16],[18,18,20],[24,24,24],[26,33,34]]\n\ntest_input = { \"nums\": [6,1,8,8,5,8,5,9,8,9,5,8,3,4,6], \"k\": 7 }\nassert my_solution.divideArray(**test_input) == [[1,3,4],[5,5,5],[6,6,8],[8,8,8],[8,9,9]]\n\ntest_input = { \"nums\": [20,21,34,3,19,2,23,32,20,17,14,13,19,20,6], \"k\": 15 }\nassert my_solution.divideArray(**test_input) == [[2,3,6],[13,14,17],[19,19,20],[20,20,21],[23,32,34]]\n\ntest_input = { \"nums\": [6,10,5,12,7,11,6,6,12,12,11,7], \"k\": 2 }\nassert my_solution.divideArray(**test_input) == [[5,6,6],[6,7,7],[10,11,11],[12,12,12]]\n\ntest_input = { \"nums\": [12,15,26,7,10,13,15,5,27,16,14,15], \"k\": 18 }\nassert my_solution.divideArray(**test_input) =
|
|||
|
{"task_id": "weekly-contest-376-minimum-cost-to-make-array-equalindromic", "url": "https://leetcode.com/problems/minimum-cost-to-make-array-equalindromic", "title": "minimum-cost-to-make-array-equalindromic", "meta": {"questionId": "3229", "questionFrontendId": "2967", "title": "Minimum Cost to Make Array Equalindromic", "titleSlug": "minimum-cost-to-make-array-equalindromic", "isPaidOnly": false, "difficulty": "Medium", "likes": 164, "dislikes": 70, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n下标从 0开始的整数数组nums。\n你可以对 nums执行特殊操作 任意次(也可以 0次)。每一次特殊操作中,你需要 按顺序执行以下步骤:\n\n从范围[0, n - 1]里选择一个下标 i和一个 正整数x。\n将|nums[i] - x|添加到总代价里。\n将 nums[i]变为x。\n\n如果一个正整数正着读和反着读都相同,那么我们称这个数是回文数。比方说,121,2552 和65756都是回文数,但是24,46,235都不是回文数。\n如果一个数组中的所有元素都等于一个整数y,且y是一个小于109的回文数,那么我们称这个数组是一个 等数数组。\n请你返回一个整数,表示执行任意次特殊操作后使 nums成为 等数数组的 最小总代价。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:6\n解释:我们可以将数组中所有元素变为回文数 3 得到等数数组,数组变成 [3,3,3,3,3] 需要执行 4 次特殊操作,代价为 |1 - 3| + |2 - 3| + |4 - 3| + |5 - 3| = 6 。\n将所有元素变为其他回文数的总代价都大于 6 。\n\n示例 2:\n\n输入:nums = [10,12,13,14,15]\n输出:11\n解释:我们可以将数组中所有元素变为回文数 11 得到等数数组,数组变成 [11,11,11,11,11] 需要执行 5 次特殊操作,代价为 |10 - 11| + |12 - 11| + |13 - 11| + |14 - 11| + |15 - 11| = 11 。\n将所有元素变为其他回文数的总代价都大于 11 。\n\n示例 3 :\n\n输入:nums = [22,33,22,33,22]\n输出:22\n解释:我们可以将数组中所有元素变为回文数 22 得到等数数组,数组变为 [22,22,22,22,22] 需要执行 2 次特殊操作,代价为 |33 - 22| + |33 - 22| = 22 。\n将所有元素变为其他回文数的总代价都大于 22 。\n\n\n提示:\n\n1 <= n <= 105\n1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def minimumCost(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n下标从 0开始的整数数组nums。\n你可以对 nums执行特殊操作 任意次(也可以 0次)。每一次特殊操作中,你需要 按顺序执行以下步骤:\n\n从范围[0, n - 1]里选择一个下标 i和一个 正整数x。\n将|nums[i] - x|添加到总代价里。\n将 nums[i]变为x。\n\n如果一个正整数正着读和反着读都相同,那么我们称这个数是回文数。比方说,121,2552 和65756都是回文数,但是24,46,235都不是回文数。\n如果一个数组中的所有元素都等于一个整数y,且y是一个小于109的回文数,那么我们称这个数组是一个 等数数组。\n请你返回一个整数,表示执行任意次特殊操作后使 nums成为 等数数组的 最小总代价。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:6\n解释:我们可以将数组中所有元素变为回文数 3 得到等数数组,数组变成 [3,3,3,3,3] 需要执行 4 次特殊操作,代价为 |1 - 3| + |2 - 3| + |4 - 3| + |5 - 3| = 6 。\n将所有元素变为其他回文数的总代价都大于 6 。\n\n示例 2:\n\n输入:nums = [10,12,13,14,15]\n输出:11\n解释:我们可以将数组中所有元素变为回文数 11 得到等数数组,数组变成 [11,11,11,11,11] 需要执行 5 次特殊操作,代价为 |10 - 11| + |12 - 11| + |13 - 11| + |14 - 11| + |15 - 11| = 11 。\n将所有元素变为其他回文数的总代价都大于 11 。\n\n示例 3 :\n\n输入:nums = [22,33,22,33,22]\n输出:22\n解释:我们可以将数组中所有元素变为回文数 22 得到等数数组,数组变为 [22,22,22,22,22] <20><>
|
|||
|
{"task_id": "weekly-contest-376-apply-operations-to-maximize-frequency-score", "url": "https://leetcode.com/problems/apply-operations-to-maximize-frequency-score", "title": "apply-operations-to-maximize-frequency-score", "meta": {"questionId": "3196", "questionFrontendId": "2968", "title": "Apply Operations to Maximize Frequency Score", "titleSlug": "apply-operations-to-maximize-frequency-score", "isPaidOnly": false, "difficulty": "Hard", "likes": 175, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的整数数组nums和一个整数k。\n你可以对数组执行 至多k次操作:\n\n从数组中选择一个下标 i,将nums[i] 增加或者减少1。\n\n最终数组的频率分数定义为数组中众数的 频率。\n请你返回你可以得到的 最大频率分数。\n众数指的是数组中出现次数最多的数。一个元素的频率指的是数组中这个元素的出现次数。\n\n示例 1:\n\n输入:nums = [1,2,6,4], k = 3\n输出:3\n解释:我们可以对数组执行以下操作:\n- 选择 i = 0 ,将 nums[0] 增加 1 。得到数组 [2,2,6,4] 。\n- 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,3] 。\n- 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,2] 。\n元素 2 是最终数组中的众数,出现了 3 次,所以频率分数为 3 。\n3 是所有可行方案里的最大频率分数。\n\n示例 2:\n\n输入:nums = [1,4,4,2,4], k = 0\n输出:3\n解释:我们无法执行任何操作,所以得到的频率分数是原数组中众数的频率 3 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n0 <= k <= 1014\n\"\"\"\nclass Solution:\n def maxFrequencyScore(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的整数数组nums和一个整数k。\n你可以对数组执行 至多k次操作:\n\n从数组中选择一个下标 i,将nums[i] 增加或者减少1。\n\n最终数组的频率分数定义为数组中众数的 频率。\n请你返回你可以得到的 最大频率分数。\n众数指的是数组中出现次数最多的数。一个元素的频率指的是数组中这个元素的出现次数。\n\n示例 1:\n\n输入:nums = [1,2,6,4], k = 3\n输出:3\n解释:我们可以对数组执行以下操作:\n- 选择 i = 0 ,将 nums[0] 增加 1 。得到数组 [2,2,6,4] 。\n- 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,3] 。\n- 选择 i = 3 ,将 nums[3] 减少 1 ,得到数组 [2,2,6,2] 。\n元素 2 是最终数组中的众数,出现了 3 次,所以频率分数为 3 。\n3 是所有可行方案里的最大频率分数。\n\n示例 2:\n\n输入:nums = [1,4,4,2,4], k = 0\n输出:3\n解释:我们无法执行任何操作,所以得到的频率分数是原数组中众数的频率 3 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n0 <= k <= 1014\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxFrequencyScore(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,6,4], \"k\": 3 }\nassert my_solution.maxFrequencyScore(**test_input) == 3\n\ntest_input = { \"nums\": [1,4,4,2,4], \"k\": 0 }\nassert my_solution.maxFrequencyScore(**test_input) == 3\n\ntest_input = { \"nums\": [3,20,13,2,3,15,24,19,8,13,19,20,21], \"k\": 45 }\nassert my_solution.maxFrequencyScore(**test_input) == 10\n\ntest_input = { \"nums\": [13,22,29,21,13,17,5,2,27,6,10,4,23,29,27], \"k\": 117 }\nassert my_solution.maxFrequencyScore(**test_input) == 14\n\ntest_input = { \"nums\": [27,8,30,3,13,28,7,14,21,19,24,28,29,1,14,22,6], \"k\": 23 }\nassert my_solution.maxFrequencyScore(**test_input) == 8\n\ntest_input = { \"nums\": [10,11,3], \"k\": 1 }\nassert my_solution.maxFrequencyScore(**test_input) == 2\n\ntest_input = { \"nums\": [10,19,26,18,27,18], \"k\": 9 }\nassert my_solution.maxFrequencyScore(**test_input) == 4\n\ntest_input = { \"nums\": [17,24,10,23,22,15,25,2,13,24,22,25,25,21], \"k\": 52 }\nassert my_solut
|
|||
|
{"task_id": "weekly-contest-375-count-tested-devices-after-test-operations", "url": "https://leetcode.com/problems/count-tested-devices-after-test-operations", "title": "count-tested-devices-after-test-operations", "meta": {"questionId": "3220", "questionFrontendId": "2960", "title": "Count Tested Devices After Test Operations", "titleSlug": "count-tested-devices-after-test-operations", "isPaidOnly": false, "difficulty": "Easy", "likes": 90, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。\n你的任务是按照顺序测试每个设备 i,执行以下测试操作:\n\n如果 batteryPercentages[i] 大于 0:\n\n\t\n增加 已测试设备的计数。\n将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)。\n移动到下一个设备。\n\n\n否则,移动到下一个设备而不执行任何测试。\n\n返回一个整数,表示按顺序执行测试操作后 已测试设备 的数量。\n\n示例 1:\n\n输入:batteryPercentages = [1,1,2,1,3]\n输出:3\n解释:按顺序从设备 0 开始执行测试操作:\n在设备 0 上,batteryPercentages[0] > 0 ,现在有 1 个已测试设备,batteryPercentages 变为 [1,0,1,0,2] 。\n在设备 1 上,batteryPercentages[1] == 0 ,移动到下一个设备而不进行测试。\n在设备 2 上,batteryPercentages[2] > 0 ,现在有 2 个已测试设备,batteryPercentages 变为 [1,0,1,0,1] 。\n在设备 3 上,batteryPercentages[3] == 0 ,移动到下一个设备而不进行测试。\n在设备 4 上,batteryPercentages[4] > 0 ,现在有 3 个已测试设备,batteryPercentages 保持不变。\n因此,答案是 3 。\n\n示例 2:\n\n输入:batteryPercentages = [0,1,2]\n输出:2\n解释:按顺序从设备 0 开始执行测试操作:\n在设备 0 上,batteryPercentages[0] == 0 ,移动到下一个设备而不进行测试。\n在设备 1 上,batteryPercentages[1] > 0 ,现在有 1 个已测试设备,batteryPercentages 变为 [0,1,1] 。\n在设备 2 上,batteryPercentages[2] > 0 ,现在有 2 个已测试设备,batteryPercentages 保持不变。\n因此,答案是 2 。\n\n\n提示:\n\n1 <= n == batteryPercentages.length <= 100 \n0 <= batteryPercentages[i] <= 100\n\"\"\"\nclass Solution:\n def countTestedDevices(self, batteryPercentages: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。\n你的任务是按照顺序测试每个设备 i,执行以下测试操作:\n\n如果 batteryPercentages[i] 大于 0:\n\n\t\n增加 已测试设备的计数。\n将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)。\n移动到下一个设备。\n\n\n否则,移动到下一个设备而不执行任何测试。\n\n返回一个整数,表示按顺序执行测试操作后 已测试设备 的数量。\n\n示例 1:\n\n输入:batteryPercentages = [1,1,2,1,3]\n输出:3\n解释:按顺序从设备 0 开始执行测试操作:\n在设备 0 上,batteryPercentages[0] > 0 ,现在有 1 个已测试设备,batteryPercentages 变为 [1,0,1,0,2] 。\n在设备 1 上,batteryPercentages[1] == 0 ,移动到下一个设备而不进行测试。\n在设备 2 上,batteryPercentages[2] > 0 ,现在有 2 个已测试设备,batteryPercentages 变为 [1,0,1,0,1] 。\n在设备 3 上,batteryPercentages[3] == 0 ,移动到下一个设备而不进行测试。\n在设备 4 上,batteryPercentages[4] > 0 ,现在有 3 个已测试设备,batteryPercentages 保持不变。\n因此,答案是 3 。\n\n示例 2:\n\n输入:batteryPercentages = [0,1,2]\n输出:2\n解释:按顺序从设备 0 开始执行测试操作:\n在设备 0
|
|||
|
{"task_id": "weekly-contest-375-double-modular-exponentiation", "url": "https://leetcode.com/problems/double-modular-exponentiation", "title": "double-modular-exponentiation", "meta": {"questionId": "3234", "questionFrontendId": "2961", "title": "Double Modular Exponentiation", "titleSlug": "double-modular-exponentiation", "isPaidOnly": false, "difficulty": "Medium", "likes": 87, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的二维数组 variables ,其中 variables[i] = [ai, bi, ci, mi],以及一个整数 target 。\n如果满足以下公式,则下标 i 是 好下标:\n\n0 <= i < variables.length\n((aibi % 10)ci) % mi == target\n\n返回一个由 好下标 组成的数组,顺序不限 。\n\n示例 1:\n\n输入:variables = [[2,3,3,10],[3,3,3,1],[6,1,1,4]], target = 2\n输出:[0,2]\n解释:对于 variables 数组中的每个下标 i :\n1) 对于下标 0 ,variables[0] = [2,3,3,10] ,(23 % 10)3 % 10 = 2 。\n2) 对于下标 1 ,variables[1] = [3,3,3,1] ,(33 % 10)3 % 1 = 0 。\n3) 对于下标 2 ,variables[2] = [6,1,1,4] ,(61 % 10)1 % 4 = 2 。\n因此,返回 [0,2] 作为答案。\n\n示例 2:\n\n输入:variables = [[39,3,1000,1000]], target = 17\n输出:[]\n解释:对于 variables 数组中的每个下标 i :\n1) 对于下标 0 ,variables[0] = [39,3,1000,1000] ,(393 % 10)1000 % 1000 = 1 。\n因此,返回 [] 作为答案。\n\n\n提示:\n\n1 <= variables.length <= 100\nvariables[i] == [ai, bi, ci, mi]\n1 <= ai, bi, ci, mi <= 103\n0 <= target <= 103\n\"\"\"\nclass Solution:\n def getGoodIndices(self, variables: List[List[int]], target: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的二维数组 variables ,其中 variables[i] = [ai, bi, ci, mi],以及一个整数 target 。\n如果满足以下公式,则下标 i 是 好下标:\n\n0 <= i < variables.length\n((aibi % 10)ci) % mi == target\n\n返回一个由 好下标 组成的数组,顺序不限 。\n\n示例 1:\n\n输入:variables = [[2,3,3,10],[3,3,3,1],[6,1,1,4]], target = 2\n输出:[0,2]\n解释:对于 variables 数组中的每个下标 i :\n1) 对于下标 0 ,variables[0] = [2,3,3,10] ,(23 % 10)3 % 10 = 2 。\n2) 对于下标 1 ,variables[1] = [3,3,3,1] ,(33 % 10)3 % 1 = 0 。\n3) 对于下标 2 ,variables[2] = [6,1,1,4] ,(61 % 10)1 % 4 = 2 。\n因此,返回 [0,2] 作为答案。\n\n示例 2:\n\n输入:variables = [[39,3,1000,1000]], target = 17\n输出:[]\n解释:对于 variables 数组中的每个下标 i :\n1) 对于下标 0 ,variables[0] = [39,3,1000,1000] ,(393 % 10)1000 % 1000 = 1 。\n因此,返回 [] 作为答案。\n\n\n提示:\n\n1 <= variables.length <= 100\nvariables[i] == [ai, bi, ci, mi]\n1 <= ai, bi, ci, mi <= 103\n0 <= target <= 103\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def getGoodIndices(self, variables: List[List[int]], target: int) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"variables\": [[2,3,3,10],[3,3,3,1],[6,1,1,4]], \"target\": 2 }\nassert my_solution.getGoodIndices(**test_input) == [0,2]\n\ntest_input = { \"variables\": [[39,3,1000,1000]], \"target\": 17 }\nassert my_solution.getGoodIndices(**test_input) == []\n\ntest_input = { \"variables\": [[3,2,4,2],[3,3,1,3],[2,2,2,4],[4,4,2,3],[2,4,1,3]], \"target\": 4 }\nassert my_solution.getGoodIndices(**test_input) == []\n\ntest_input = { \"variables\": [[9,2,8,5],[7,8,8,8],[8,9,6,1],[8,6,2,2],[3,6,3,1]], \"target\": 9 }\nassert my_solution.getGoodIndices(**test_input) == []\n\ntest_input = { \"variables\": [[2,2,3,2],[1,3,3,2],[3,2,2,3],[3,1,2,3],[1,2,3,1],[2,2,2,2],[2,1,3,1],[3,2,2,2],[2,1,3,1],[3,3,1,3]], \"target\": 0 }\nassert my_solution.getGoodIndices(**test_input) == [0,2,3,4,5,6,8]\n\ntest_input = { \"variables\": [[1,3,2,3],[4,2,3,3],[4,1,4,4],[4,2,3,1],[4,2,1,1],[1,2,4,1],[1,1,4,2],[1,4,4,3],[1,2,2,3]], \"target\": 2 }\nassert my_solution.getGoodIndices(**test_input) == []\n\ntest_input = { \"variables\": [[5,4,1,3],[
|
|||
|
{"task_id": "weekly-contest-375-count-subarrays-where-max-element-appears-at-least-k-times", "url": "https://leetcode.com/problems/count-subarrays-where-max-element-appears-at-least-k-times", "title": "count-subarrays-where-max-element-appears-at-least-k-times", "meta": {"questionId": "3213", "questionFrontendId": "2962", "title": "Count Subarrays Where Max Element Appears at Least K Times", "titleSlug": "count-subarrays-where-max-element-appears-at-least-k-times", "isPaidOnly": false, "difficulty": "Medium", "likes": 215, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数数组 nums 和一个 正整数 k 。\n请你统计有多少满足 「nums 中的 最大 元素」至少出现 k 次的子数组,并返回满足这一条件的子数组的数目。\n子数组是数组中的一个连续元素序列。\n\n示例 1:\n\n输入:nums = [1,3,2,3,3], k = 2\n输出:6\n解释:包含元素 3 至少 2 次的子数组为:[1,3,2,3]、[1,3,2,3,3]、[3,2,3]、[3,2,3,3]、[2,3,3] 和 [3,3] 。\n\n示例 2:\n\n输入:nums = [1,4,2,1], k = 3\n输出:0\n解释:没有子数组包含元素 4 至少 3 次。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 106\n1 <= k <= 105\n\"\"\"\nclass Solution:\n def countSubarrays(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个整数数组 nums 和一个 正整数 k 。\n请你统计有多少满足 「nums 中的 最大 元素」至少出现 k 次的子数组,并返回满足这一条件的子数组的数目。\n子数组是数组中的一个连续元素序列。\n\n示例 1:\n\n输入:nums = [1,3,2,3,3], k = 2\n输出:6\n解释:包含元素 3 至少 2 次的子数组为:[1,3,2,3]、[1,3,2,3,3]、[3,2,3]、[3,2,3,3]、[2,3,3] 和 [3,3] 。\n\n示例 2:\n\n输入:nums = [1,4,2,1], k = 3\n输出:0\n解释:没有子数组包含元素 4 至少 3 次。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 106\n1 <= k <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countSubarrays(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,2,3,3], \"k\": 2 }\nassert my_solution.countSubarrays(**test_input) == 6\n\ntest_input = { \"nums\": [1,4,2,1], \"k\": 3 }\nassert my_solution.countSubarrays(**test_input) == 0\n\ntest_input = { \"nums\": [61,23,38,23,56,40,82,56,82,82,82,70,8,69,8,7,19,14,58,42,82,10,82,78,15,82], \"k\": 2 }\nassert my_solution.countSubarrays(**test_input) == 224\n\ntest_input = { \"nums\": [37,20,38,66,34,38,9,41,1,14,25,63,8,12,66,66,60,12,35,27,16,38,12,66,38,36,59,54,66,54,66,48,59,66,34,11,50,66,42,51,53,66,31,24,66,44,66,1,66,66,29,54], \"k\": 5 }\nassert my_solution.countSubarrays(**test_input) == 594\n\ntest_input = { \"nums\": [28,5,58,91,24,91,53,9,48,85,16,70,91,91,47,91,61,4,54,61,49], \"k\": 1 }\nassert my_solution.countSubarrays(**test_input) == 187\n\ntest_input = { \"nums\": [43,105,105,88,19,82,95,32,80,37,49,105,25,105,46,54,45,84,105,88,26,20,49,54,31,105,8,103,37,32,105,105,97,27,105,89,105,47,25,87,29,105,105,105,24,105,105,48,19,91,96,71], \"k\": 7 }\nassert my_solution.countSubarrays(**test_input) == 454\n\ntest_input = { \"nums\": [107,101,180,137,191,148,83,15,188,22,100,124,69,94,191,181,171,64,136,96,91,191,107,191,191,191,107,191,191,11,140,33,4,110,83,5,86,33,42,186,191,6,42,61,94,129,191,119,191,134,43,182,191,187,63,116,172,118,50,141,124,191,125,145,191,34,191,191], \"k\": 9 }\nassert my_solution.countSubarrays(**test_input) == 548\n\ntest_input = { \"nums\": [41,121,92,15,24,59,45,110,97,132,75,72,31,38,103,37,132,91,132,132,105,24], \"k\": 3 }\nassert my_solution.countSubarrays(**test_input) == 61\n\ntest_input = { \"nums\": [21,11,13,15,16,21,8,9,6,21], \"k\": 2 }\nassert my_solution.countSubarrays(**test_input) == 10\n\ntest_input = { \"nums\": [31,18,36,166,166,166,135,166,166,12,102], \"k\": 3 }\nassert my_solution.countSubarrays(**test_input) == 31\n\ntest_input = { \"nums\": [2,2,2,2,1,3,3,2,2,1,1,3,1,1,2,3,2,1,1,2,1,
|
|||
|
{"task_id": "weekly-contest-375-count-the-number-of-good-partitions", "url": "https://leetcode.com/problems/count-the-number-of-good-partitions", "title": "count-the-number-of-good-partitions", "meta": {"questionId": "3212", "questionFrontendId": "2963", "title": "Count the Number of Good Partitions", "titleSlug": "count-the-number-of-good-partitions", "isPaidOnly": false, "difficulty": "Hard", "likes": 163, "dislikes": 1, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、由 正整数 组成的数组 nums。\n将数组分割成一个或多个 连续 子数组,如果不存在包含了相同数字的两个子数组,则认为是一种 好分割方案 。\n返回 nums 的 好分割方案 的 数目。\n由于答案可能很大,请返回答案对 109 + 7 取余 的结果。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:8\n解释:有 8 种 好分割方案 :([1], [2], [3], [4]), ([1], [2], [3,4]), ([1], [2,3], [4]), ([1], [2,3,4]), ([1,2], [3], [4]), ([1,2], [3,4]), ([1,2,3], [4]) 和 ([1,2,3,4]) 。\n\n示例 2:\n\n输入:nums = [1,1,1,1]\n输出:1\n解释:唯一的 好分割方案 是:([1,1,1,1]) 。\n\n示例 3:\n\n输入:nums = [1,2,1,3]\n输出:2\n解释:有 2 种 好分割方案 :([1,2,1], [3]) 和 ([1,2,1,3]) 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def numberOfGoodPartitions(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、由 正整数 组成的数组 nums。\n将数组分割成一个或多个 连续 子数组,如果不存在包含了相同数字的两个子数组,则认为是一种 好分割方案 。\n返回 nums 的 好分割方案 的 数目。\n由于答案可能很大,请返回答案对 109 + 7 取余 的结果。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:8\n解释:有 8 种 好分割方案 :([1], [2], [3], [4]), ([1], [2], [3,4]), ([1], [2,3], [4]), ([1], [2,3,4]), ([1,2], [3], [4]), ([1,2], [3,4]), ([1,2,3], [4]) 和 ([1,2,3,4]) 。\n\n示例 2:\n\n输入:nums = [1,1,1,1]\n输出:1\n解释:唯一的 好分割方案 是:([1,1,1,1]) 。\n\n示例 3:\n\n输入:nums = [1,2,1,3]\n输出:2\n解释:有 2 种 好分割方案 :([1,2,1], [3]) 和 ([1,2,1,3]) 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfGoodPartitions(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 8\n\ntest_input = { \"nums\": [1,1,1,1] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 1\n\ntest_input = { \"nums\": [1,2,1,3] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 2\n\ntest_input = { \"nums\": [1] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 1\n\ntest_input = { \"nums\": [100000] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 1\n\ntest_input = { \"nums\": [1000000000] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 1\n\ntest_input = { \"nums\": [1,1,1,3,2] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 4\n\ntest_input = { \"nums\": [1,1,1,9,7] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 4\n\ntest_input = { \"nums\": [1,1,5,9,2] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 8\n\ntest_input = { \"nums\": [1,4,1,7,5] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 4\n\ntest_input = { \"nums\": [1,5,1,5,6] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 2\n\ntest_input = { \"nums\": [1,5,1,10,8] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 4\n\ntest_input = { \"nums\": [1,6,8,1,5] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 2\n\ntest_input = { \"nums\": [1,6,9,4,10] }\nassert my_solution.numberOfGoodPartitions(**test_input) == 16\n\ntest_input = { \"nums\": [1,7,1,6,8] }\nassert my_solution.numberOfGoodPartiti
|
|||
|
{"task_id": "biweekly-contest-119-find-common-elements-between-two-arrays", "url": "https://leetcode.com/problems/find-common-elements-between-two-arrays", "title": "find-common-elements-between-two-arrays", "meta": {"questionId": "3206", "questionFrontendId": "2956", "title": "Find Common Elements Between Two Arrays", "titleSlug": "find-common-elements-between-two-arrays", "isPaidOnly": false, "difficulty": "Easy", "likes": 66, "dislikes": 25, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0开始的整数数组nums1和nums2,它们分别含有 n和 m个元素。\n请你计算以下两个数值:\n\n统计0 <= i < n中的下标i,满足nums1[i]在 nums2中 至少出现了一次。\n统计0 <= i < m中的下标i,满足nums2[i]在 nums1中 至少出现了一次。\n\n请你返回一个长度为 2的整数数组answer,按顺序分别为以上两个数值。\n\n示例 1:\n\n输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]\n输出:[3,4]\n解释:分别计算两个数值:\n- nums1 中下标为 1 ,2 和 3 的元素在 nums2 中至少出现了一次,所以第一个值为 3 。\n- nums2 中下标为 0 ,1 ,3 和 4 的元素在 nums1 中至少出现了一次,所以第二个值为 4 。\n\n示例 2:\n\n输入:nums1 = [3,4,2,3], nums2 = [1,5]\n输出:[0,0]\n解释:两个数组中没有公共元素,所以两个值都为 0 。\n\n\n提示:\n\nn == nums1.length\nm == nums2.length\n1 <= n, m <= 100\n1 <= nums1[i], nums2[i] <= 100\n\"\"\"\nclass Solution:\n def findIntersectionValues(self, nums1: List[int], nums2: List[int]) -> List[int]:\n ", "prompt_sft": "给你两个下标从 0开始的整数数组nums1和nums2,它们分别含有 n和 m个元素。\n请你计算以下两个数值:\n\n统计0 <= i < n中的下标i,满足nums1[i]在 nums2中 至少出现了一次。\n统计0 <= i < m中的下标i,满足nums2[i]在 nums1中 至少出现了一次。\n\n请你返回一个长度为 2的整数数组answer,按顺序分别为以上两个数值。\n\n示例 1:\n\n输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]\n输出:[3,4]\n解释:分别计算两个数值:\n- nums1 中下标为 1 ,2 和 3 的元素在 nums2 中至少出现了一次,所以第一个值为 3 。\n- nums2 中下标为 0 ,1 ,3 和 4 的元素在 nums1 中至少出现了一次,所以第二个值为 4 。\n\n示例 2:\n\n输入:nums1 = [3,4,2,3], nums2 = [1,5]\n输出:[0,0]\n解释:两个数组中没有公共元素,所以两个值都为 0 。\n\n\n提示:\n\nn == nums1.length\nm == nums2.length\n1 <= n, m <= 100\n1 <= nums1[i], nums2[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findIntersectionValues(self, nums1: List[int], nums2: List[int]) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums1\": [4,3,2,3,1], \"nums2\": [2,2,5,2,3,6] }\nassert my_solution.findIntersectionValues(**test_input) == [3,4]\n\ntest_input = { \"nums1\": [3,4,2,3], \"nums2\": [1,5] }\nassert my_solution.findIntersectionValues(**test_input) == [0,0]\n\ntest_input = { \"nums1\": [24,28,7,27,7,27,9,24,9,10], \"nums2\": [12,29,9,7,5] }\nassert my_solution.findIntersectionValues(**test_input) == [4,2]\n\ntest_input = { \"nums1\": [10,30,16,18], \"nums2\": [23,30,30,6,10,26,9,27,6,16,18,10,27,2,20,7,16] }\nassert my_solution.findIntersectionValues(**test_input) == [4,7]\n\ntest_input = { \"nums1\": [7,23,27,20,21,29,7,27,27,18,7,6,20,10], \"nums2\": [27,27,28,24,20,4,6,17,9,29,20,14,20] }\nassert my_solution.findIntersectionValues(**test_input) == [7,7]\n\ntest_input = { \"nums1\": [15,30,6,6], \"nums2\": [15,4,16,10,7,23,24,3,4,6,14,8,18,1,29,27,2,17] }\nassert my_solution.findIntersectionValues(**test_input) == [3,2]\n\ntest_input = { \"nums1\": [24,7,8,6,22,28,22,28,7,19], \"nums2\": [3,7,28,7,3,3] }\nassert my_solution.findIntersectionValues(**test_input) == [4,3]\n\ntest_input = { \"nums1\": [23,4,26,17,23,13], \"nums2\": [24,17,20,16,1,13,17,28,17] }\nassert my_solution.findIntersectionValues(**tes
|
|||
|
{"task_id": "biweekly-contest-119-remove-adjacent-almost-equal-characters", "url": "https://leetcode.com/problems/remove-adjacent-almost-equal-characters", "title": "remove-adjacent-almost-equal-characters", "meta": {"questionId": "3230", "questionFrontendId": "2957", "title": "Remove Adjacent Almost-Equal Characters", "titleSlug": "remove-adjacent-almost-equal-characters", "isPaidOnly": false, "difficulty": "Medium", "likes": 115, "dislikes": 16, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的字符串word。\n一次操作中,你可以选择word中任意一个下标 i,将word[i] 修改成任意一个小写英文字母。\n请你返回消除 word中所有相邻 近似相等字符的 最少操作次数。\n两个字符a 和b如果满足a == b或者a 和b在字母表中是相邻的,那么我们称它们是 近似相等字符。\n\n示例 1:\n\n输入:word = \"aaaaa\"\n输出:2\n解释:我们将 word 变为 \"acaca\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 2 次操作。\n\n示例 2:\n\n输入:word = \"abddez\"\n输出:2\n解释:我们将 word 变为 \"ybdoez\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 2 次操作。\n示例 3:\n\n输入:word = \"zyxyxyz\"\n输出:3\n解释:我们将 word 变为 \"zaxaxaz\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 3 次操作\n\n\n提示:\n\n1 <= word.length <= 100\nword只包含小写英文字母。\n\"\"\"\nclass Solution:\n def removeAlmostEqualCharacters(self, word: str) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的字符串word。\n一次操作中,你可以选择word中任意一个下标 i,将word[i] 修改成任意一个小写英文字母。\n请你返回消除 word中所有相邻 近似相等字符的 最少操作次数。\n两个字符a 和b如果满足a == b或者a 和b在字母表中是相邻的,那么我们称它们是 近似相等字符。\n\n示例 1:\n\n输入:word = \"aaaaa\"\n输出:2\n解释:我们将 word 变为 \"acaca\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 2 次操作。\n\n示例 2:\n\n输入:word = \"abddez\"\n输出:2\n解释:我们将 word 变为 \"ybdoez\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 2 次操作。\n示例 3:\n\n输入:word = \"zyxyxyz\"\n输出:3\n解释:我们将 word 变为 \"zaxaxaz\" ,该字符串没有相邻近似相等字符。\n消除 word 中所有相邻近似相等字符最少需要 3 次操作\n\n\n提示:\n\n1 <= word.length <= 100\nword只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def removeAlmostEqualCharacters(self, word: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"word\": \"aaaaa\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 2\n\ntest_input = { \"word\": \"abddez\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 2\n\ntest_input = { \"word\": \"zyxyxyz\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 3\n\ntest_input = { \"word\": \"a\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 0\n\ntest_input = { \"word\": \"b\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 0\n\ntest_input = { \"word\": \"c\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 0\n\ntest_input = { \"word\": \"aa\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 1\n\ntest_input = { \"word\": \"ab\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 1\n\ntest_input = { \"word\": \"ac\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) == 0\n\ntest_input = { \"word\": \"ba\" }\nassert my_solution.removeAlmostEqualCharacters(**test_input) =
|
|||
|
{"task_id": "biweekly-contest-119-length-of-longest-subarray-with-at-most-k-frequency", "url": "https://leetcode.com/problems/length-of-longest-subarray-with-at-most-k-frequency", "title": "length-of-longest-subarray-with-at-most-k-frequency", "meta": {"questionId": "3225", "questionFrontendId": "2958", "title": "Length of Longest Subarray With at Most K Frequency", "titleSlug": "length-of-longest-subarray-with-at-most-k-frequency", "isPaidOnly": false, "difficulty": "Medium", "likes": 139, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数数组nums和一个整数k。\n一个元素 x在数组中的 频率指的是它在数组中的出现次数。\n如果一个数组中所有元素的频率都 小于等于k,那么我们称这个数组是 好数组。\n请你返回 nums中 最长好子数组的长度。\n子数组 指的是一个数组中一段连续非空的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,1,2,3,1,2], k = 2\n输出:6\n解释:最长好子数组是 [1,2,3,1,2,3] ,值 1 ,2 和 3 在子数组中的频率都没有超过 k = 2 。[2,3,1,2,3,1] 和 [3,1,2,3,1,2] 也是好子数组。\n最长好子数组的长度为 6 。\n\n示例 2:\n\n输入:nums = [1,2,1,2,1,2,1,2], k = 1\n输出:2\n解释:最长好子数组是 [1,2] ,值 1 和 2 在子数组中的频率都没有超过 k = 1 。[2,1] 也是好子数组。\n最长好子数组的长度为 2 。\n\n示例 3:\n\n输入:nums = [5,5,5,5,5,5,5], k = 4\n输出:4\n解释:最长好子数组是 [5,5,5,5] ,值 5 在子数组中的频率没有超过 k = 4 。\n最长好子数组的长度为 4 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n1 <= k <= nums.length\n\"\"\"\nclass Solution:\n def maxSubarrayLength(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个整数数组nums和一个整数k。\n一个元素 x在数组中的 频率指的是它在数组中的出现次数。\n如果一个数组中所有元素的频率都 小于等于k,那么我们称这个数组是 好数组。\n请你返回 nums中 最长好子数组的长度。\n子数组 指的是一个数组中一段连续非空的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,3,1,2,3,1,2], k = 2\n输出:6\n解释:最长好子数组是 [1,2,3,1,2,3] ,值 1 ,2 和 3 在子数组中的频率都没有超过 k = 2 。[2,3,1,2,3,1] 和 [3,1,2,3,1,2] 也是好子数组。\n最长好子数组的长度为 6 。\n\n示例 2:\n\n输入:nums = [1,2,1,2,1,2,1,2], k = 1\n输出:2\n解释:最长好子数组是 [1,2] ,值 1 和 2 在子数组中的频率都没有超过 k = 1 。[2,1] 也是好子数组。\n最长好子数组的长度为 2 。\n\n示例 3:\n\n输入:nums = [5,5,5,5,5,5,5], k = 4\n输出:4\n解释:最长好子数组是 [5,5,5,5] ,值 5 在子数组中的频率没有超过 k = 4 。\n最长好子数组的长度为 4 。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n1 <= k <= nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxSubarrayLength(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,1,2,3,1,2], \"k\": 2 }\nassert my_solution.maxSubarrayLength(**test_input) == 6\n\ntest_input = { \"nums\": [1,2,1,2,1,2,1,2], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 2\n\ntest_input = { \"nums\": [5,5,5,5,5,5,5], \"k\": 4 }\nassert my_solution.maxSubarrayLength(**test_input) == 4\n\ntest_input = { \"nums\": [1], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 1\n\ntest_input = { \"nums\": [2], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 1\n\ntest_input = { \"nums\": [3], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 1\n\ntest_input = { \"nums\": [4], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 1\n\ntest_input = { \"nums\": [5], \"k\": 1 }\nassert my_solution.maxSubarrayLength(**test_input) == 1\n\ntest_input = { \"nums\": [6],
|
|||
|
{"task_id": "biweekly-contest-119-number-of-possible-sets-of-closing-branches", "url": "https://leetcode.com/problems/number-of-possible-sets-of-closing-branches", "title": "number-of-possible-sets-of-closing-branches", "meta": {"questionId": "3217", "questionFrontendId": "2959", "title": "Number of Possible Sets of Closing Branches", "titleSlug": "number-of-possible-sets-of-closing-branches", "isPaidOnly": false, "difficulty": "Hard", "likes": 110, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n一个公司在全国有 n个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。\n公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部),同时保证剩下的分部之间两两互相可以到达且最远距离不超过maxDistance。\n两个分部之间的 距离 是通过道路长度之和的 最小值。\n给你整数n,maxDistance和下标从 0开始的二维整数数组roads,其中roads[i] = [ui, vi, wi]表示一条从ui到vi长度为wi的无向道路。\n请你返回关闭分部的可行方案数目,满足每个方案里剩余分部之间的最远距离不超过maxDistance。\n注意,关闭一个分部后,与之相连的所有道路不可通行。\n注意,两个分部之间可能会有多条道路。\n\n示例 1:\n\n\n输入:n = 3, maxDistance = 5, roads = [[0,1,2],[1,2,10],[0,2,10]]\n输出:5\n解释:可行的关闭分部方案有:\n- 关闭分部集合 [2] ,剩余分部为 [0,1] ,它们之间的距离为 2 。\n- 关闭分部集合 [0,1] ,剩余分部为 [2] 。\n- 关闭分部集合 [1,2] ,剩余分部为 [0] 。\n- 关闭分部集合 [0,2] ,剩余分部为 [1] 。\n- 关闭分部集合 [0,1,2] ,关闭后没有剩余分部。\n总共有 5 种可行的关闭方案。\n\n示例 2:\n\n\n输入:n = 3, maxDistance = 5, roads = [[0,1,20],[0,1,10],[1,2,2],[0,2,2]]\n输出:7\n解释:可行的关闭分部方案有:\n- 关闭分部集合 [] ,剩余分部为 [0,1,2] ,它们之间的最远距离为 4 。\n- 关闭分部集合 [0] ,剩余分部为 [1,2] ,它们之间的距离为 2 。\n- 关闭分部集合 [1] ,剩余分部为 [0,2] ,它们之间的距离为 2 。\n- 关闭分部集合 [0,1] ,剩余分部为 [2] 。\n- 关闭分部集合 [1,2] ,剩余分部为 [0] 。\n- 关闭分部集合 [0,2] ,剩余分部为 [1] 。\n- 关闭分部集合 [0,1,2] ,关闭后没有剩余分部。\n总共有 7 种可行的关闭方案。\n\n示例 3:\n\n输入:n = 1, maxDistance = 10, roads = []\n输出:2\n解释:可行的关闭分部方案有:\n- 关闭分部集合 [] ,剩余分部为 [0] 。\n- 关闭分部集合 [0] ,关闭后没有剩余分部。\n总共有 2 种可行的关闭方案。\n\n\n提示:\n\n1 <= n <= 10\n1 <= maxDistance <= 105\n0 <= roads.length <= 1000\nroads[i].length == 3\n0 <= ui, vi <= n - 1\nui != vi\n1 <= wi <= 1000\n一开始所有分部之间通过道路互相可以到达。\n\"\"\"\nclass Solution:\n def numberOfSets(self, n: int, maxDistance: int, roads: List[List[int]]) -> int:\n ", "prompt_sft": "一个公司在全国有 n个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。\n公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部),同时保证剩下的分部之间两两互相可以到达且最远距离不超过maxDistance。\n两个分部之间的 距离 是通过道路长度之和的 最小值。\n给你整数n,maxDistance和下标从 0开始的二维整数数组roads,其中roads[i] = [ui, vi, wi]表示一条从ui到vi长度为wi的无向道路。\n请你返回关闭分部的可行方案数目,满足每个方案里剩余分部之间的最远距离不超过maxDistance。\n注意,关闭一个分部后,与之相连的所有道路不可通行。\n注意,两个分部之间可能会有多条道路。\n\n示例 1:\n
|
|||
|
{"task_id": "weekly-contest-374-find-the-peaks", "url": "https://leetcode.com/problems/find-the-peaks", "title": "find-the-peaks", "meta": {"questionId": "3221", "questionFrontendId": "2951", "title": "Find the Peaks", "titleSlug": "find-the-peaks", "isPaidOnly": false, "difficulty": "Easy", "likes": 91, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组mountain 中的所有 峰值。\n以数组形式返回给定数组中 峰值 的下标,顺序不限 。\n注意:\n\n峰值 是指一个严格大于其相邻元素的元素。\n数组的第一个和最后一个元素 不 是峰值。\n\n\n示例 1:\n\n输入:mountain = [2,4,4]\n输出:[]\n解释:mountain[0] 和 mountain[2] 不可能是峰值,因为它们是数组的第一个和最后一个元素。\nmountain[1] 也不可能是峰值,因为它不严格大于 mountain[2] 。\n因此,答案为 [] 。\n\n示例 2:\n\n输入:mountain = [1,4,3,8,5]\n输出:[1,3]\n解释:mountain[0] 和 mountain[4] 不可能是峰值,因为它们是数组的第一个和最后一个元素。\nmountain[2] 也不可能是峰值,因为它不严格大于 mountain[3] 和 mountain[1] 。\n但是 mountain[1] 和 mountain[3] 严格大于它们的相邻元素。\n因此,答案是 [1,3] 。\n\n\n提示:\n\n3 <= mountain.length <= 100\n1 <= mountain[i] <= 100\n\"\"\"\nclass Solution:\n def findPeaks(self, mountain: List[int]) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组mountain 中的所有 峰值。\n以数组形式返回给定数组中 峰值 的下标,顺序不限 。\n注意:\n\n峰值 是指一个严格大于其相邻元素的元素。\n数组的第一个和最后一个元素 不 是峰值。\n\n\n示例 1:\n\n输入:mountain = [2,4,4]\n输出:[]\n解释:mountain[0] 和 mountain[2] 不可能是峰值,因为它们是数组的第一个和最后一个元素。\nmountain[1] 也不可能是峰值,因为它不严格大于 mountain[2] 。\n因此,答案为 [] 。\n\n示例 2:\n\n输入:mountain = [1,4,3,8,5]\n输出:[1,3]\n解释:mountain[0] 和 mountain[4] 不可能是峰值,因为它们是数组的第一个和最后一个元素。\nmountain[2] 也不可能是峰值,因为它不严格大于 mountain[3] 和 mountain[1] 。\n但是 mountain[1] 和 mountain[3] 严格大于它们的相邻元素。\n因此,答案是 [1,3] 。\n\n\n提示:\n\n3 <= mountain.length <= 100\n1 <= mountain[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findPeaks(self, mountain: List[int]) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"mountain\": [2,4,4] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,4,3,8,5] }\nassert my_solution.findPeaks(**test_input) == [1,3]\n\ntest_input = { \"mountain\": [1,1,1] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,1,3] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,1,5] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,2,5] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,4,1] }\nassert my_solution.findPeaks(**test_input) == [1]\n\ntest_input = { \"mountain\": [1,4,3] }\nassert my_solution.findPeaks(**test_input) == [1]\n\ntest_input = { \"mountain\": [1,5,5] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [1,6,4] }\nassert my_solution.findPeaks(**test_input) == [1]\n\ntest_input = { \"mountain\": [2,1,1] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [2,1,2] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [2,2,3] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"mountain\": [2,2,5] }\nassert my_solution.findPeaks(**test_input) == []\n\ntest_input = { \"
|
|||
|
{"task_id": "weekly-contest-374-minimum-number-of-coins-to-be-added", "url": "https://leetcode.com/problems/minimum-number-of-coins-to-be-added", "title": "minimum-number-of-coins-to-be-added", "meta": {"questionId": "3231", "questionFrontendId": "2952", "title": "Minimum Number of Coins to be Added", "titleSlug": "minimum-number-of-coins-to-be-added", "isPaidOnly": false, "difficulty": "Medium", "likes": 227, "dislikes": 40, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 coins,表示可用的硬币的面值,以及一个整数 target 。\n如果存在某个 coins 的子序列总和为 x,那么整数 x 就是一个 可取得的金额 。\n返回需要添加到数组中的 任意面值 硬币的 最小数量 ,使范围 [1, target] 内的每个整数都属于 可取得的金额 。\n数组的 子序列 是通过删除原始数组的一些(可能不删除)元素而形成的新的 非空 数组,删除过程不会改变剩余元素的相对位置。\n\n示例 1:\n\n输入:coins = [1,4,10], target = 19\n输出:2\n解释:需要添加面值为 2 和 8 的硬币各一枚,得到硬币数组 [1,2,4,8,10] 。\n可以证明从 1 到 19 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 2 。\n\n示例 2:\n\n输入:coins = [1,4,10,5,7,19], target = 19\n输出:1\n解释:只需要添加一枚面值为 2 的硬币,得到硬币数组 [1,2,4,5,7,10,19] 。\n可以证明从 1 到 19 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 1 。\n示例 3:\n\n输入:coins = [1,1,1], target = 20\n输出:3\n解释:\n需要添加面值为 4 、8 和 16 的硬币各一枚,得到硬币数组 [1,1,1,4,8,16] 。 \n可以证明从 1 到 20 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 3 。\n\n提示:\n\n1 <= target <= 105\n1 <= coins.length <= 105\n1 <= coins[i] <= target\n\"\"\"\nclass Solution:\n def minimumAddedCoins(self, coins: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 coins,表示可用的硬币的面值,以及一个整数 target 。\n如果存在某个 coins 的子序列总和为 x,那么整数 x 就是一个 可取得的金额 。\n返回需要添加到数组中的 任意面值 硬币的 最小数量 ,使范围 [1, target] 内的每个整数都属于 可取得的金额 。\n数组的 子序列 是通过删除原始数组的一些(可能不删除)元素而形成的新的 非空 数组,删除过程不会改变剩余元素的相对位置。\n\n示例 1:\n\n输入:coins = [1,4,10], target = 19\n输出:2\n解释:需要添加面值为 2 和 8 的硬币各一枚,得到硬币数组 [1,2,4,8,10] 。\n可以证明从 1 到 19 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 2 。\n\n示例 2:\n\n输入:coins = [1,4,10,5,7,19], target = 19\n输出:1\n解释:只需要添加一枚面值为 2 的硬币,得到硬币数组 [1,2,4,5,7,10,19] 。\n可以证明从 1 到 19 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 1 。\n示例 3:\n\n输入:coins = [1,1,1], target = 20\n输出:3\n解释:\n需要添加面值为 4 、8 和 16 的硬币各一枚,得到硬币数组 [1,1,1,4,8,16] 。 \n可以证明从 1 到 20 的所有整数都可由数组中的硬币组合得到,且需要添加到数组中的硬币数目最小为 3 。\n\n提示:\n\n1 <= target <= 105\n1 <= coins.length <= 105\n1 <= coins[i] <= target\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumAddedCoins(self, coins: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"coins\": [1,4,10], \"target\": 19 }\nassert my_solution.minimumAddedCoins(**test_input) == 2\n\ntest_input = { \"coins\": [1,4,10,5,7,19], \"
|
|||
|
{"task_id": "weekly-contest-374-count-complete-substrings", "url": "https://leetcode.com/problems/count-complete-substrings", "title": "count-complete-substrings", "meta": {"questionId": "3223", "questionFrontendId": "2953", "title": "Count Complete Substrings", "titleSlug": "count-complete-substrings", "isPaidOnly": false, "difficulty": "Hard", "likes": 154, "dislikes": 30, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串word和一个整数 k。\n如果word的一个子字符串 s满足以下条件,我们称它是 完全字符串:\n\ns中每个字符 恰好出现 k次。\n相邻字符在字母表中的顺序 至多相差2。也就是说,s中两个相邻字符c1 和c2,它们在字母表中的位置相差至多为 2 。\n\n请你返回 word中 完全子字符串的数目。\n子字符串指的是一个字符串中一段连续 非空的字符序列。\n\n示例 1:\n\n输入:word = \"igigee\", k = 2\n输出:3\n解释:完全子字符串需要满足每个字符恰好出现 2 次,且相邻字符相差至多为 2 :igigee, igigee, igigee。\n\n示例 2:\n\n输入:word = \"aaabbbccc\", k = 3\n输出:6\n解释:完全子字符串需要满足每个字符恰好出现 3 次,且相邻字符相差至多为 2 :aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc 。\n\n\n提示:\n\n1 <= word.length <= 105\nword只包含小写英文字母。\n1 <= k <= word.length\n\"\"\"\nclass Solution:\n def countCompleteSubstrings(self, word: str, k: int) -> int:\n ", "prompt_sft": "给你一个字符串word和一个整数 k。\n如果word的一个子字符串 s满足以下条件,我们称它是 完全字符串:\n\ns中每个字符 恰好出现 k次。\n相邻字符在字母表中的顺序 至多相差2。也就是说,s中两个相邻字符c1 和c2,它们在字母表中的位置相差至多为 2 。\n\n请你返回 word中 完全子字符串的数目。\n子字符串指的是一个字符串中一段连续 非空的字符序列。\n\n示例 1:\n\n输入:word = \"igigee\", k = 2\n输出:3\n解释:完全子字符串需要满足每个字符恰好出现 2 次,且相邻字符相差至多为 2 :igigee, igigee, igigee。\n\n示例 2:\n\n输入:word = \"aaabbbccc\", k = 3\n输出:6\n解释:完全子字符串需要满足每个字符恰好出现 3 次,且相邻字符相差至多为 2 :aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc, aaabbbccc 。\n\n\n提示:\n\n1 <= word.length <= 105\nword只包含小写英文字母。\n1 <= k <= word.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countCompleteSubstrings(self, word: str, k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"word\": \"igigee\", \"k\": 2 }\nassert my_solution.countCompleteSubstrings(**test_input) == 3\n\ntest_input = { \"word\": \"aaabbbccc\", \"k\": 3 }\nassert my_solution.countCompleteSubstrings(**test_input) == 6\n\ntest_input = { \"word\": \"a\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 1\n\ntest_input = { \"word\": \"b\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 1\n\ntest_input = { \"word\": \"c\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 1\n\ntest_input = { \"word\": \"aa\", \"k\": 2 }\nassert my_solution.countCompleteSubstrings(**test_input) == 1\n\ntest_input = { \"word\": \"ab\", \"k\": 2 }\nassert my_solution.countCompleteSubstrings(**test_input) == 0\n\ntest_input = { \"word\": \"ac\", \"k\": 2 }\nassert my_solution.countCompleteSubstrings(**test_input) == 0\n\ntest_input = { \"word\": \"ba\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 3\n\ntest_input = { \"word\": \"bb\", \"k\": 2 }\nassert my_solution.countCompleteSubstrings(**test_input) == 1\n\ntest_input = { \"word\": \"bc\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 3\n\ntest_input = { \"word\": \"ca\", \"k\": 1 }\nassert my_solution.countCompleteSubstrings(**test_input) == 3\n\n
|
|||
|
{"task_id": "weekly-contest-374-count-the-number-of-infection-sequences", "url": "https://leetcode.com/problems/count-the-number-of-infection-sequences", "title": "count-the-number-of-infection-sequences", "meta": {"questionId": "3224", "questionFrontendId": "2954", "title": "Count the Number of Infection Sequences", "titleSlug": "count-the-number-of-infection-sequences", "isPaidOnly": false, "difficulty": "Hard", "likes": 50, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数n和一个下标从 0开始的整数数组sick,数组按 升序排序。\n有n位小朋友站成一排,按顺序编号为 0到 n - 1。数组sick包含一开始得了感冒的小朋友的位置。如果位置为i的小朋友得了感冒,他会传染给下标为 i - 1或者 i + 1的小朋友,前提 是被传染的小朋友存在且还没有得感冒。每一秒中, 至多一位还没感冒的小朋友会被传染。\n经过有限的秒数后,队列中所有小朋友都会感冒。感冒序列指的是 所有一开始没有感冒的小朋友最后得感冒的顺序序列。请你返回所有感冒序列的数目。\n由于答案可能很大,请你将答案对109 + 7取余后返回。\n注意,感冒序列 不 包含一开始就得了感冒的小朋友的下标。\n\n示例 1:\n\n输入:n = 5, sick = [0,4]\n输出:4\n解释:一开始,下标为 1 ,2 和 3 的小朋友没有感冒。总共有 4 个可能的感冒序列:\n- 一开始,下标为 1 和 3 的小朋友可以被传染,因为他们分别挨着有感冒的小朋友 0 和 4 ,令下标为 1 的小朋友先被传染。\n然后,下标为 2 的小朋友挨着感冒的小朋友 1 ,下标为 3 的小朋友挨着感冒的小朋友 4 ,两位小朋友都可以被传染,令下标为 2 的小朋友被传染。\n最后,下标为 3 的小朋友被传染,因为他挨着感冒的小朋友 2 和 4 ,感冒序列为 [1,2,3] 。\n- 一开始,下标为 1 和 3 的小朋友可以被传染,因为他们分别挨着感冒的小朋友 0 和 4 ,令下标为 1 的小朋友先被传染。\n然后,下标为 2 的小朋友挨着感冒的小朋友 1 ,下标为 3 的小朋友挨着感冒的小朋友 4 ,两位小朋友都可以被传染,令下标为 3 的小朋友被传染。\n最后,下标为 2 的小朋友被传染,因为他挨着感冒的小朋友 1 和 3 ,感冒序列为 [1,3,2] 。\n- 感冒序列 [3,1,2] ,被传染的顺序:[0,1,2,3,4] => [0,1,2,3,4] => [0,1,2,3,4] => [0,1,2,3,4] 。\n- 感冒序列 [3,2,1] ,被传染的顺序:[0,1,2,3,4] => [0,1,2,3,4] => [0,1,2,3,4] => [0,1,2,3,4] 。\n\n示例 2:\n\n输入:n = 4, sick = [1]\n输出:3\n解释:一开始,下标为 0 ,2 和 3 的小朋友没有感冒。总共有 3 个可能的感冒序列:\n- 感冒序列 [0,2,3] ,被传染的顺序:[0,1,2,3] => [0,1,2,3] => [0,1,2,3] => [0,1,2,3] 。\n- 感冒序列 [2,0,3] ,被传染的顺序:[0,1,2,3] => [0,1,2,3] => [0,1,2,3] => [0,1,2,3] 。\n- 感冒序列 [2,3,0] ,被传染的顺序:[0,1,2,3] => [0,1,2,3] => [0,1,2,3] => [0,1,2,3] 。\n\n\n提示:\n\n2 <= n <= 105\n1 <= sick.length <= n - 1\n0 <= sick[i] <= n - 1\nsick按升序排列。\n\"\"\"\nclass Solution:\n def numberOfSequence(self, n: int, sick: List[int]) -> int:\n ", "prompt_sft": "给你一个整数n和一个下标从 0开始的整数数组sick,数组按 升序排序。\n有n位小朋友站成一排,按顺序编号为 0到 n - 1。数组sick包含一开始得了感冒的小朋友的位置。如果位置为i的小朋友得了感冒,他会传染给下标为 i - 1或者 i + 1的小朋友,前提 是被传染的小朋友存在且还没有得感冒。每一秒中, 至多一位还没感冒的小朋友会被传染。\n经过有限的秒数后,队列中所有小朋友都会感冒。感冒序列指的是 所有一开始没有感冒的小朋友最后得感冒的顺序序列。请你返回所有感冒序列的数目。\n由于答案可能很大,请你将答案对109 + 7取余后返回。\n注意,感冒序列 不 包含<E58C85><E590AB>
|
|||
|
{"task_id": "weekly-contest-373-matrix-similarity-after-cyclic-shifts", "url": "https://leetcode.com/problems/matrix-similarity-after-cyclic-shifts", "title": "matrix-similarity-after-cyclic-shifts", "meta": {"questionId": "3215", "questionFrontendId": "2946", "title": "Matrix Similarity After Cyclic Shifts", "titleSlug": "matrix-similarity-after-cyclic-shifts", "isPaidOnly": false, "difficulty": "Easy", "likes": 72, "dislikes": 48, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始且大小为 m x n 的整数矩阵 mat 和一个整数 k 。请你将矩阵中的 奇数 行循环 右 移 k 次,偶数 行循环 左 移 k 次。\n如果初始矩阵和最终矩阵完全相同,则返回 true ,否则返回 false 。\n\n示例 1:\n\n输入:mat = [[1,2,1,2],[5,5,5,5],[6,3,6,3]], k = 2\n输出:true\n解释:\n\n\n初始矩阵如图一所示。\n图二表示对奇数行右移一次且对偶数行左移一次后的矩阵状态。\n图三是经过两次循环移位后的最终矩阵状态,与初始矩阵相同。\n因此,返回 true 。\n\n示例 2:\n\n输入:mat = [[2,2],[2,2]], k = 3\n输出:true\n解释:由于矩阵中的所有值都相等,即使进行循环移位,矩阵仍然保持不变。因此,返回 true 。\n\n示例 3:\n\n输入:mat = [[1,2]], k = 1\n输出:false\n解释:循环移位一次后,mat = [[2,1]],与初始矩阵不相等。因此,返回 false 。\n\n\n提示:\n\n1 <= mat.length <= 25\n1 <= mat[i].length <= 25\n1 <= mat[i][j] <= 25\n1 <= k <= 50\n\"\"\"\nclass Solution:\n def areSimilar(self, mat: List[List[int]], k: int) -> bool:\n ", "prompt_sft": "给你一个下标从 0 开始且大小为 m x n 的整数矩阵 mat 和一个整数 k 。请你将矩阵中的 奇数 行循环 右 移 k 次,偶数 行循环 左 移 k 次。\n如果初始矩阵和最终矩阵完全相同,则返回 true ,否则返回 false 。\n\n示例 1:\n\n输入:mat = [[1,2,1,2],[5,5,5,5],[6,3,6,3]], k = 2\n输出:true\n解释:\n\n\n初始矩阵如图一所示。\n图二表示对奇数行右移一次且对偶数行左移一次后的矩阵状态。\n图三是经过两次循环移位后的最终矩阵状态,与初始矩阵相同。\n因此,返回 true 。\n\n示例 2:\n\n输入:mat = [[2,2],[2,2]], k = 3\n输出:true\n解释:由于矩阵中的所有值都相等,即使进行循环移位,矩阵仍然保持不变。因此,返回 true 。\n\n示例 3:\n\n输入:mat = [[1,2]], k = 1\n输出:false\n解释:循环移位一次后,mat = [[2,1]],与初始矩阵不相等。因此,返回 false 。\n\n\n提示:\n\n1 <= mat.length <= 25\n1 <= mat[i].length <= 25\n1 <= mat[i][j] <= 25\n1 <= k <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def areSimilar(self, mat: List[List[int]], k: int) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"mat\": [[1,2]], \"k\": 1 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[1,2,1,2],[5,5,5,5],[6,3,6,3]], \"k\": 2 }\nassert my_solution.areSimilar(**test_input) == True\n\ntest_input = { \"mat\": [[4,9,10,10],[9,3,8,4],[2,5,3,8],[6,1,10,4]], \"k\": 5 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[5,8,8,4,7,2,3,4,3,10],[8,7,9,1,3,4,2,6,6,9],[6,2,10,10,4,6,3,4,1,1]], \"k\": 3 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[4,7,9,1,10,5,2,6,1,7],[8,9,9,2,3,2,3,2,3,5],[1,2,4,7,4,7,9,7,9,9]], \"k\": 5 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[10,6,3,6],[4,8,1,2]], \"k\": 6 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[7,10,6,7,7,4,4,7,2,2],[3,6,4,8,4,6,4,3,1,4],[4,8,7,1,10,2,10,8,10,1],[4,7,10,5,1,9,8,3,5,8],[3,7,6,5,3,1,3,2,8,5],[6,1,5,10,8,7,7,10,1,3]], \"k\": 7 }\nassert my_solution.areSimilar(**test_input) == False\n\ntest_input = { \"mat\": [[6,5,3],[4,6,2],[4,1,8],[3,9,1],[6,1,2],[1,9,9],[2,6,10]], \"k\": 5 }\nassert my_solution.a
|
|||
|
{"task_id": "weekly-contest-373-count-beautiful-substrings-i", "url": "https://leetcode.com/problems/count-beautiful-substrings-i", "title": "count-beautiful-substrings-i", "meta": {"questionId": "3210", "questionFrontendId": "2947", "title": "Count Beautiful Substrings I", "titleSlug": "count-beautiful-substrings-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 102, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 s 和一个正整数 k 。\n用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。\n如果某个字符串满足以下条件,则称其为 美丽字符串 :\n\nvowels == consonants,即元音字母和辅音字母的数量相等。\n(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。\n\n返回字符串 s 中 非空美丽子字符串 的数量。\n子字符串是字符串中的一个连续字符序列。\n英语中的 元音字母 为 'a'、'e'、'i'、'o' 和 'u' 。\n英语中的 辅音字母 为除了元音字母之外的所有字母。\n\n示例 1:\n\n输入:s = \"baeyh\", k = 2\n输出:2\n解释:字符串 s 中有 2 个美丽子字符串。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"y\",\"h\"])。\n可以看出字符串 \"aeyh\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"b\",\"y\"])。\n可以看出字符串 \"baey\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n可以证明字符串 s 中只有 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"abba\", k = 1\n输出:3\n解释:字符串 s 中有 3 个美丽子字符串。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 2([\"a\",\"a\"]),consonants = 2([\"b\",\"b\"])。\n可以证明字符串 s 中只有 3 个美丽子字符串。\n\n示例 3:\n\n输入:s = \"bcdf\", k = 1\n输出:0\n解释:字符串 s 中没有美丽子字符串。\n\n\n提示:\n\n1 <= s.length <= 1000\n1 <= k <= 1000\ns 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def beautifulSubstrings(self, s: str, k: int) -> int:\n ", "prompt_sft": "给你一个字符串 s 和一个正整数 k 。\n用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。\n如果某个字符串满足以下条件,则称其为 美丽字符串 :\n\nvowels == consonants,即元音字母和辅音字母的数量相等。\n(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。\n\n返回字符串 s 中 非空美丽子字符串 的数量。\n子字符串是字符串中的一个连续字符序列。\n英语中的 元音字母 为 'a'、'e'、'i'、'o' 和 'u' 。\n英语中的 辅音字母 为除了元音字母之外的所有字母。\n\n示例 1:\n\n输入:s = \"baeyh\", k = 2\n输出:2\n解释:字符串 s 中有 2 个美丽子字符串。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"y\",\"h\"])。\n可以看出字符串 \"aeyh\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"b\",\"y\"])。\n可以看出字符串 \"baey\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n可以证明字符串 s 中只有 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"abba\", k = 1\n输出:3\n解释:字符串 s 中有 3 个美丽子字符串。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 2([\"a\",\"a\"]),consonants = 2([\"b\",\"b\"]<5D>
|
|||
|
{"task_id": "weekly-contest-373-make-lexicographically-smallest-array-by-swapping-elements", "url": "https://leetcode.com/problems/make-lexicographically-smallest-array-by-swapping-elements", "title": "make-lexicographically-smallest-array-by-swapping-elements", "meta": {"questionId": "3219", "questionFrontendId": "2948", "title": "Make Lexicographically Smallest Array by Swapping Elements", "titleSlug": "make-lexicographically-smallest-array-by-swapping-elements", "isPaidOnly": false, "difficulty": "Medium", "likes": 197, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。\n在一次操作中,你可以选择任意两个下标 i 和 j,如果 满足 |nums[i] - nums[j]| <= limit ,则交换 nums[i] 和 nums[j] 。\n返回执行任意次操作后能得到的 字典序最小的数组 。\n如果在数组 a 和数组 b 第一个不同的位置上,数组 a 中的对应元素比数组 b 中的对应元素的字典序更小,则认为数组 a 就比数组 b 字典序更小。例如,数组 [2,10,3] 比数组 [10,2,3] 字典序更小,下标 0 处是两个数组第一个不同的位置,且 2 < 10 。\n\n示例 1:\n\n输入:nums = [1,5,3,9,8], limit = 2\n输出:[1,3,5,8,9]\n解释:执行 2 次操作:\n- 交换 nums[1] 和 nums[2] 。数组变为 [1,3,5,9,8] 。\n- 交换 nums[3] 和 nums[4] 。数组变为 [1,3,5,8,9] 。\n即便执行更多次操作,也无法得到字典序更小的数组。\n注意,执行不同的操作也可能会得到相同的结果。\n\n示例 2:\n\n输入:nums = [1,7,6,18,2,1], limit = 3\n输出:[1,6,7,18,1,2]\n解释:执行 3 次操作:\n- 交换 nums[1] 和 nums[2] 。数组变为 [1,6,7,18,2,1] 。\n- 交换 nums[0] 和 nums[4] 。数组变为 [2,6,7,18,1,1] 。\n- 交换 nums[0] 和 nums[5] 。数组变为 [1,6,7,18,1,2] 。\n即便执行更多次操作,也无法得到字典序更小的数组。\n\n示例 3:\n\n输入:nums = [1,7,28,19,10], limit = 3\n输出:[1,7,28,19,10]\n解释:[1,7,28,19,10] 是字典序最小的数组,因为不管怎么选择下标都无法执行操作。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n1 <= limit <= 109\n\"\"\"\nclass Solution:\n def lexicographicallySmallestArray(self, nums: List[int], limit: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。\n在一次操作中,你可以选择任意两个下标 i 和 j,如果 满足 |nums[i] - nums[j]| <= limit ,则交换 nums[i] 和 nums[j] 。\n返回执行任意次操作后能得到的 字典序最小的数组 。\n如果在数组 a 和数组 b 第一个不同的位置上,数组 a 中的对应元素比数组 b 中的对应元素的字典序更小,则认为数组 a 就比数组 b 字典序更小。例如,数组 [2,10,3] 比数组 [10,2,3] 字典序更小,下标 0 处是两个数组第一个不同的位置,且 2 < 10 。\n\n示例 1:\n\n输入:nums = [1,5,3,9,8], limit = 2\n输出:[1,3,5,8,9]\n解释:执行 2 次操作:\n- 交换 nums[1] 和 nums[2] 。数组变为 [1,3,5,9,8] 。\n- 交换 nums[3] 和 nums[4] 。数组变为 [1,3,5,8,9] 。\n即便执行更多次操作,也无法得到字典序更小的数组。\n注意,执行不同的操作也可能会得到相同的结果。\n\n示例 2:\n\n输入:nums = [1,7,6,18,2,1], limit = 3\n输出:[1,6,7,18,1,2]\n解释:执行 3 次操作:\n- 交换 nums[1] 和 nums[2] 。数组变为 [1,6,7,18,2,1] 。\n- 交换 nums[0] 和 nums[4] 。数组变为 [2,6,7,18,1,1] 。\n- 交换 nums[0] 和 nums[5] 。数组变为 [1,6,7,18,1,2] 。\n即便执行更多次操作,也无法得到字典序更小的数组。\n\n示例 3:\n\n输入:nums = [1,7,28,19,10], limit = 3\n输出:[1,7,28,19,10]\n解释:[1,7,28,19,10] 是字典序最小的数组,因为不管怎么选择下标都无法执行操作。\n\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 109\n1 <= limit <= 109\n\n\n请完成下面的代
|
|||
|
{"task_id": "weekly-contest-373-count-beautiful-substrings-ii", "url": "https://leetcode.com/problems/count-beautiful-substrings-ii", "title": "count-beautiful-substrings-ii", "meta": {"questionId": "3208", "questionFrontendId": "2949", "title": "Count Beautiful Substrings II", "titleSlug": "count-beautiful-substrings-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 137, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 s 和一个正整数 k 。\n用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。\n如果某个字符串满足以下条件,则称其为 美丽字符串 :\n\nvowels == consonants,即元音字母和辅音字母的数量相等。\n(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。\n\n返回字符串 s 中 非空美丽子字符串 的数量。\n子字符串是字符串中的一个连续字符序列。\n英语中的 元音字母 为 'a'、'e'、'i'、'o' 和 'u' 。\n英语中的 辅音字母 为除了元音字母之外的所有字母。\n\n示例 1:\n\n输入:s = \"baeyh\", k = 2\n输出:2\n解释:字符串 s 中有 2 个美丽子字符串。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"y\",\"h\"])。\n可以看出字符串 \"aeyh\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"b\",\"y\"])。\n可以看出字符串 \"baey\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n可以证明字符串 s 中只有 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"abba\", k = 1\n输出:3\n解释:字符串 s 中有 3 个美丽子字符串。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 2([\"a\",\"a\"]),consonants = 2([\"b\",\"b\"])。\n可以证明字符串 s 中只有 3 个美丽子字符串。\n\n示例 3:\n\n输入:s = \"bcdf\", k = 1\n输出:0\n解释:字符串 s 中没有美丽子字符串。\n\n\n提示:\n\n1 <= s.length <= 5 * 104\n1 <= k <= 1000\ns 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def beautifulSubstrings(self, s: str, k: int) -> int:\n ", "prompt_sft": "给你一个字符串 s 和一个正整数 k 。\n用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。\n如果某个字符串满足以下条件,则称其为 美丽字符串 :\n\nvowels == consonants,即元音字母和辅音字母的数量相等。\n(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。\n\n返回字符串 s 中 非空美丽子字符串 的数量。\n子字符串是字符串中的一个连续字符序列。\n英语中的 元音字母 为 'a'、'e'、'i'、'o' 和 'u' 。\n英语中的 辅音字母 为除了元音字母之外的所有字母。\n\n示例 1:\n\n输入:s = \"baeyh\", k = 2\n输出:2\n解释:字符串 s 中有 2 个美丽子字符串。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"y\",\"h\"])。\n可以看出字符串 \"aeyh\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n- 子字符串 \"baeyh\",vowels = 2([\"a\",\"e\"]),consonants = 2([\"b\",\"y\"])。\n可以看出字符串 \"baey\" 是美丽字符串,因为 vowels == consonants 且 vowels * consonants % k == 0 。\n可以证明字符串 s 中只有 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"abba\", k = 1\n输出:3\n解释:字符串 s 中有 3 个美丽子字符串。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 1([\"a\"]),consonants = 1([\"b\"])。\n- 子字符串 \"abba\",vowels = 2([\"a\",\"a\"]),consonants = 2([\"b\",\
|
|||
|
{"task_id": "biweekly-contest-118-find-words-containing-character", "url": "https://leetcode.com/problems/find-words-containing-character", "title": "find-words-containing-character", "meta": {"questionId": "3194", "questionFrontendId": "2942", "title": "Find Words Containing Character", "titleSlug": "find-words-containing-character", "isPaidOnly": false, "difficulty": "Easy", "likes": 134, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的字符串数组words和一个字符x。\n请你返回一个 下标数组,表示下标在数组中对应的单词包含字符 x。\n注意,返回的数组可以是任意顺序。\n\n示例 1:\n\n输入:words = [\"leet\",\"code\"], x = \"e\"\n输出:[0,1]\n解释:\"e\" 在两个单词中都出现了:\"leet\" 和 \"code\" 。所以我们返回下标 0 和 1 。\n\n示例 2:\n\n输入:words = [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], x = \"a\"\n输出:[0,2]\n解释:\"a\" 在 \"abc\" 和 \"aaaa\" 中出现了,所以我们返回下标 0 和 2 。\n\n示例 3:\n\n输入:words = [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], x = \"z\"\n输出:[]\n解释:\"z\" 没有在任何单词中出现。所以我们返回空数组。\n\n\n提示:\n\n1 <= words.length <= 50\n1 <= words[i].length <= 50\nx是一个小写英文字母。\nwords[i]只包含小写英文字母。\n\"\"\"\nclass Solution:\n def findWordsContaining(self, words: List[str], x: str) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0开始的字符串数组words和一个字符x。\n请你返回一个 下标数组,表示下标在数组中对应的单词包含字符 x。\n注意,返回的数组可以是任意顺序。\n\n示例 1:\n\n输入:words = [\"leet\",\"code\"], x = \"e\"\n输出:[0,1]\n解释:\"e\" 在两个单词中都出现了:\"leet\" 和 \"code\" 。所以我们返回下标 0 和 1 。\n\n示例 2:\n\n输入:words = [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], x = \"a\"\n输出:[0,2]\n解释:\"a\" 在 \"abc\" 和 \"aaaa\" 中出现了,所以我们返回下标 0 和 2 。\n\n示例 3:\n\n输入:words = [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], x = \"z\"\n输出:[]\n解释:\"z\" 没有在任何单词中出现。所以我们返回空数组。\n\n\n提示:\n\n1 <= words.length <= 50\n1 <= words[i].length <= 50\nx是一个小写英文字母。\nwords[i]只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findWordsContaining(self, words: List[str], x: str) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"words\": [\"leet\",\"code\"], \"x\": \"e\" }\nassert my_solution.findWordsContaining(**test_input) == [0,1]\n\ntest_input = { \"words\": [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], \"x\": \"a\" }\nassert my_solution.findWordsContaining(**test_input) == [0,2]\n\ntest_input = { \"words\": [\"abc\",\"bcd\",\"aaaa\",\"cbc\"], \"x\": \"z\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"sgtkshnss\",\"m\",\"ryvbkyvuz\",\"ezittyjwgb\",\"wudlwg\"], \"x\": \"x\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"lkwnhpbj\",\"tlohm\",\"juazsb\",\"f\",\"rq\"], \"x\": \"v\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"aaa\",\"imvtfjmxr\",\"wbzfoovjnf\",\"hqwrwmi\"], \"x\": \"c\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"utyeachht\",\"bgpkcs\",\"skeecqvvvw\",\"nccrd\"], \"x\": \"i\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"alcpxexztg\",\"r\"], \"x\": \"h\" }\nassert my_solution.findWordsContaining(**test_input) == []\n\ntest_input = { \"words\": [\"ekcpg\",\"pdknua\",\"fot\",\"janppw\",\"ofomkfvx\"], \"x\": \"g\" }\nassert my_solution.findWordsContaining(**test_input) == [0]\n\ntest_input = { \"words\": [\"dq\",\"rlvopu\"], \"x\": \"d\" }\nassert my_solution.findWordsContaining(**test_input) == [0]\n\ntest_inpu
|
|||
|
{"task_id": "biweekly-contest-118-maximize-area-of-square-hole-in-grid", "url": "https://leetcode.com/problems/maximize-area-of-square-hole-in-grid", "title": "maximize-area-of-square-hole-in-grid", "meta": {"questionId": "3214", "questionFrontendId": "2943", "title": "Maximize Area of Square Hole in Grid", "titleSlug": "maximize-area-of-square-hole-in-grid", "isPaidOnly": false, "difficulty": "Medium", "likes": 73, "dislikes": 110, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个网格图,由n + 2条 横线段和m + 2条竖线段组成,一开始所有区域均为1 x 1的单元格。\n所有线段的编号从 1开始。\n给你两个整数n 和m。\n同时给你两个整数数组hBars 和vBars。\n\nhBars 包含区间[2, n + 1]内互不相同的横线段编号。\nvBars包含[2, m + 1]内互不相同的竖线段编号。\n\n如果满足以下条件之一,你可以 移除两个数组中的部分线段:\n\n如果移除的是横线段,它必须是hBars中的值。\n如果移除的是竖线段,它必须是vBars中的值。\n\n请你返回移除一些线段后(可能不移除任何线段),剩余网格图中 最大正方形空洞的面积,正方形空洞的意思是正方形 内部 不含有任何线段。\n\n示例 1:\n\n\n输入:n = 2, m = 1, hBars = [2,3], vBars = [2]\n输出:4\n解释:左边的图是一开始的网格图。\n横线编号的范围是区间 [1,4] ,竖线编号的范围是区间 [1,3] 。\n可以移除的横线段为 [2,3] ,竖线段为 [2] 。\n一种得到最大正方形面积的方法是移除横线段 2 和竖线段 2 。\n操作后得到的网格图如右图所示。\n正方形空洞面积为 4。\n无法得到面积大于 4 的正方形空洞。\n所以答案为 4 。\n\n示例 2:\n\n\n输入:n = 1, m = 1, hBars = [2], vBars = [2]\n输出:4\n解释:左边的图是一开始的网格图。\n横线编号的范围是区间 [1,3] ,竖线编号的范围是区间 [1,3] 。\n可以移除的横线段为 [2] ,竖线段为 [2] 。\n一种得到最大正方形面积的方法是移除横线段 2 和竖线段 2 。\n操作后得到的网格图如右图所示。\n正方形空洞面积为 4。\n无法得到面积大于 4 的正方形空洞。\n所以答案为 4 。\n\n示例 3:\n\n\n输入:n = 2, m = 3, hBars = [2,3], vBars = [2,3,4]\n输出:9\n解释:左边的图是一开始的网格图。\n横线编号的范围是区间 [1,4] ,竖线编号的范围是区间 [1,5] 。\n可以移除的横线段为 [2,3] ,竖线段为 [2,3,4] 。\n一种得到最大正方形面积的方法是移除横线段 2、3 和竖线段 3、4 。\n操作后得到的网格图如右图所示。\n正方形空洞面积为 9。\n无法得到面积大于 9 的正方形空洞。\n所以答案为 9 。\n\n\n提示:\n\n1 <= n <= 109\n1 <= m <= 109\n1 <= hBars.length <= 100\n2 <= hBars[i] <= n + 1\n1 <= vBars.length <= 100\n2 <= vBars[i] <= m + 1\nhBars中的值互不相同。\nvBars 中的值互不相同。\n\"\"\"\nclass Solution:\n def maximizeSquareHoleArea(self, n: int, m: int, hBars: List[int], vBars: List[int]) -> int:\n ", "prompt_sft": "给你一个网格图,由n + 2条 横线段和m + 2条竖线段组成,一开始所有区域均为1 x 1的单元格。\n所有线段的编号从 1开始。\n给你两个整数n 和m。\n同时给你两个整数数组hBars 和vBars。\n\nhBars 包含区间[2, n + 1]内互不相同的横线段编号。\nvBars包含[2, m + 1]内互不相同的竖线段编号。\n\n如果满足以下条件之一,你可以 移除两个数组中的部分线段:\n\n如果移除的是横线段,它必须是hBars中的值。\n如果移除的是竖线段,它必须是vBars中的值。\n\n请你返回移除一些线段后(可能不移除任何线段),剩余网格图中 最大正方形空洞的面积,正方形空洞的意思是正方形 内部 不含有任何线段。\n\n示例 1:\n\n\n输入:n = 2, m = 1, hBars = [2,3], vBars = [2]\n输出:4\n解释:左边的图是一开始的网格图。\n横线编号的范围是区间 [1,4] ,竖线<E7AB96>
|
|||
|
{"task_id": "biweekly-contest-118-minimum-number-of-coins-for-fruits", "url": "https://leetcode.com/problems/minimum-number-of-coins-for-fruits", "title": "minimum-number-of-coins-for-fruits", "meta": {"questionId": "3209", "questionFrontendId": "2944", "title": "Minimum Number of Coins for Fruits", "titleSlug": "minimum-number-of-coins-for-fruits", "isPaidOnly": false, "difficulty": "Medium", "likes": 141, "dislikes": 27, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n你在一个水果超市里,货架上摆满了玲琅满目的奇珍异果。\n给你一个下标从 1开始的数组prices,其中prices[i]表示你购买第 i个水果需要花费的金币数目。\n水果超市有如下促销活动:\n\n如果你花费 price[i]购买了水果i,那么接下来的 i个水果你都可以免费获得。\n\n注意,即使你可以免费获得水果j,你仍然可以花费prices[j]个金币去购买它以便能免费获得接下来的 j个水果。\n请你返回获得所有水果所需要的 最少金币数。\n\n示例 1:\n\n输入:prices = [3,1,2]\n输出:4\n解释:你可以按如下方法获得所有水果:\n- 花 3 个金币购买水果 1 ,然后免费获得水果 2 。\n- 花 1 个金币购买水果 2 ,然后免费获得水果 3 。\n- 免费获得水果 3 。\n注意,虽然你可以免费获得水果 2 ,但你还是花 1 个金币去购买它,因为这样的总花费最少。\n购买所有水果需要最少花费 4 个金币。\n\n示例 2:\n\n输入:prices = [1,10,1,1]\n输出:2\n解释:你可以按如下方法获得所有水果:\n- 花 1 个金币购买水果 1 ,然后免费获得水果 2 。\n- 免费获得水果 2 。\n- 花 1 个金币购买水果 3 ,然后免费获得水果 4 。\n- 免费获得水果 4 。\n购买所有水果需要最少花费 2 个金币。\n\n\n提示:\n\n1 <= prices.length <= 1000\n1 <= prices[i] <= 105\n\"\"\"\nclass Solution:\n def minimumCoins(self, prices: List[int]) -> int:\n ", "prompt_sft": "你在一个水果超市里,货架上摆满了玲琅满目的奇珍异果。\n给你一个下标从 1开始的数组prices,其中prices[i]表示你购买第 i个水果需要花费的金币数目。\n水果超市有如下促销活动:\n\n如果你花费 price[i]购买了水果i,那么接下来的 i个水果你都可以免费获得。\n\n注意,即使你可以免费获得水果j,你仍然可以花费prices[j]个金币去购买它以便能免费获得接下来的 j个水果。\n请你返回获得所有水果所需要的 最少金币数。\n\n示例 1:\n\n输入:prices = [3,1,2]\n输出:4\n解释:你可以按如下方法获得所有水果:\n- 花 3 个金币购买水果 1 ,然后免费获得水果 2 。\n- 花 1 个金币购买水果 2 ,然后免费获得水果 3 。\n- 免费获得水果 3 。\n注意,虽然你可以免费获得水果 2 ,但你还是花 1 个金币去购买它,因为这样的总花费最少。\n购买所有水果需要最少花费 4 个金币。\n\n示例 2:\n\n输入:prices = [1,10,1,1]\n输出:2\n解释:你可以按如下方法获得所有水果:\n- 花 1 个金币购买水果 1 ,然后免费获得水果 2 。\n- 免费获得水果 2 。\n- 花 1 个金币购买水果 3 ,然后免费获得水果 4 。\n- 免费获得水果 4 。\n购买所有水果需要最少花费 2 个金币。\n\n\n提示:\n\n1 <= prices.length <= 1000\n1 <= prices[i] <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumCoins(self, prices: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"prices\": [3,1,2] }\nassert my_solution.minimumCoins(**test_input) == 4\n\ntest_input = { \"prices\": [1,10,1,1] }\nassert my_solution.minimumCoins(**test_input) == 2\n\ntest_input = { \"prices\": [26,18,6,12,49,7,45,45] }\nassert my_solution.minimumCoins(**test_input) == 39\n\ntest_input = { \"prices\": [27,17,29,45,3,39,42,26] }\nassert my_solution.minimumCoins(**test_input) == 47\n\ntest_input = { \"prices\": [14,37,37,38,24,15,12]
|
|||
|
{"task_id": "biweekly-contest-118-find-maximum-non-decreasing-array-length", "url": "https://leetcode.com/problems/find-maximum-non-decreasing-array-length", "title": "find-maximum-non-decreasing-array-length", "meta": {"questionId": "3211", "questionFrontendId": "2945", "title": "Find Maximum Non-decreasing Array Length", "titleSlug": "find-maximum-non-decreasing-array-length", "isPaidOnly": false, "difficulty": "Hard", "likes": 90, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的整数数组nums。\n你可以执行任意次操作。每次操作中,你需要选择一个 子数组,并将这个子数组用它所包含元素的 和替换。比方说,给定数组是[1,3,5,6],你可以选择子数组[3,5],用子数组的和 8替换掉子数组,然后数组会变为[1,8,6]。\n请你返回执行任意次操作以后,可以得到的 最长非递减数组的长度。\n子数组指的是一个数组中一段连续 非空的元素序列。\n\n示例 1:\n\n输入:nums = [5,2,2]\n输出:1\n解释:这个长度为 3 的数组不是非递减的。\n我们有 2 种方案使数组长度为 2 。\n第一种,选择子数组 [2,2] ,对数组执行操作后得到 [5,4] 。\n第二种,选择子数组 [5,2] ,对数组执行操作后得到 [7,2] 。\n这两种方案中,数组最后都不是 非递减的,所以不是可行的答案。\n如果我们选择子数组 [5,2,2] ,并将它替换为 [9] ,数组变成非递减的。\n所以答案为 1 。\n\n示例 2:\n\n输入:nums = [1,2,3,4]\n输出:4\n解释:数组已经是非递减的。所以答案为 4 。\n\n示例 3:\n\n输入:nums = [4,3,2,6]\n输出:3\n解释:将 [3,2] 替换为 [5] ,得到数组 [4,5,6] ,它是非递减的。\n最大可能的答案为 3 。\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 105\n\"\"\"\nclass Solution:\n def findMaximumLength(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0开始的整数数组nums。\n你可以执行任意次操作。每次操作中,你需要选择一个 子数组,并将这个子数组用它所包含元素的 和替换。比方说,给定数组是[1,3,5,6],你可以选择子数组[3,5],用子数组的和 8替换掉子数组,然后数组会变为[1,8,6]。\n请你返回执行任意次操作以后,可以得到的 最长非递减数组的长度。\n子数组指的是一个数组中一段连续 非空的元素序列。\n\n示例 1:\n\n输入:nums = [5,2,2]\n输出:1\n解释:这个长度为 3 的数组不是非递减的。\n我们有 2 种方案使数组长度为 2 。\n第一种,选择子数组 [2,2] ,对数组执行操作后得到 [5,4] 。\n第二种,选择子数组 [5,2] ,对数组执行操作后得到 [7,2] 。\n这两种方案中,数组最后都不是 非递减的,所以不是可行的答案。\n如果我们选择子数组 [5,2,2] ,并将它替换为 [9] ,数组变成非递减的。\n所以答案为 1 。\n\n示例 2:\n\n输入:nums = [1,2,3,4]\n输出:4\n解释:数组已经是非递减的。所以答案为 4 。\n\n示例 3:\n\n输入:nums = [4,3,2,6]\n输出:3\n解释:将 [3,2] 替换为 [5] ,得到数组 [4,5,6] ,它是非递减的。\n最大可能的答案为 3 。\n\n提示:\n\n1 <= nums.length <= 105\n1 <= nums[i] <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findMaximumLength(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,2,2] }\nassert my_solution.findMaximumLength(**test_input) == 1\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.findMaximumLength(**test_input) == 4\n\ntest_input = { \"nums\": [4,3,2,6] }\nassert my_solution.findMaximumLength(**test_input) == 3\n\ntest_input = { \"nums\": [32] }\nassert my_solution.findMaximumLength(**test_input) == 1\n\ntest_input = { \"nums\": [38] }\nassert my_solution.findMaximumLength(**test_input) == 1\n\ntest_input = { \"nums\": [60] }\nassert my_solution.fi
|
|||
|
{"task_id": "weekly-contest-372-make-three-strings-equal", "url": "https://leetcode.com/problems/make-three-strings-equal/", "title": "make-three-strings-equal", "meta": {"questionId": "3207", "questionFrontendId": "2937", "title": "Make Three Strings Equal", "titleSlug": "make-three-strings-equal", "isPaidOnly": false, "difficulty": "Easy", "likes": 114, "dislikes": 30, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个字符串 s1、s2 和 s3。 你可以根据需要对这三个字符串执行以下操作 任意次数 。\n在每次操作中,你可以选择其中一个长度至少为 2 的字符串 并删除其 最右位置上 的字符。\n如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的 最小 操作次数;否则,返回 -1。\n\n示例 1:\n\n输入:s1 = \"abc\",s2 = \"abb\",s3 = \"ab\"\n输出:2\n解释:对 s1 和 s2 进行一次操作后,可以得到三个相等的字符串。\n可以证明,不可能用少于两次操作使它们相等。\n示例 2:\n\n输入:s1 = \"dac\",s2 = \"bac\",s3 = \"cac\"\n输出:-1\n解释:因为 s1 和 s2 的最左位置上的字母不相等,所以无论进行多少次操作,它们都不可能相等。因此答案是 -1 。\n\n提示:\n\n1 <= s1.length, s2.length, s3.length <= 100\ns1、s2 和 s3 仅由小写英文字母组成。\n\"\"\"\nclass Solution:\n def findMinimumOperations(self, s1: str, s2: str, s3: str) -> int:\n ", "prompt_sft": "给你三个字符串 s1、s2 和 s3。 你可以根据需要对这三个字符串执行以下操作 任意次数 。\n在每次操作中,你可以选择其中一个长度至少为 2 的字符串 并删除其 最右位置上 的字符。\n如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的 最小 操作次数;否则,返回 -1。\n\n示例 1:\n\n输入:s1 = \"abc\",s2 = \"abb\",s3 = \"ab\"\n输出:2\n解释:对 s1 和 s2 进行一次操作后,可以得到三个相等的字符串。\n可以证明,不可能用少于两次操作使它们相等。\n示例 2:\n\n输入:s1 = \"dac\",s2 = \"bac\",s3 = \"cac\"\n输出:-1\n解释:因为 s1 和 s2 的最左位置上的字母不相等,所以无论进行多少次操作,它们都不可能相等。因此答案是 -1 。\n\n提示:\n\n1 <= s1.length, s2.length, s3.length <= 100\ns1、s2 和 s3 仅由小写英文字母组成。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findMinimumOperations(self, s1: str, s2: str, s3: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s1\": \"abc\", \"s2\": \"abb\", \"s3\": \"ab\" }\nassert my_solution.findMinimumOperations(**test_input) == 2\n\ntest_input = { \"s1\": \"dac\", \"s2\": \"bac\", \"s3\": \"cac\" }\nassert my_solution.findMinimumOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"a\", \"s2\": \"a\", \"s3\": \"a\" }\nassert my_solution.findMinimumOperations(**test_input) == 0\n\ntest_input = { \"s1\": \"kui\", \"s2\": \"m\", \"s3\": \"v\" }\nassert my_solution.findMinimumOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"a\", \"s2\": \"aabc\", \"s3\": \"a\" }\nassert my_solution.findMinimumOperations(**test_input) == 3\n\ntest_input = { \"s1\": \"cc\", \"s2\": \"cccb\", \"s3\": \"c\" }\nassert my_solution.findMinimumOperations(**test_input) == 4\n\ntest_input = { \"s1\": \"luso\", \"s2\": \"lu\", \"s3\": \"lu\" }\nassert my_solution.findMinimumOperations(**test_input) == 2\n\ntest_input = { \"s1\": \"xx\", \"s2\": \"phe\", \"s3\": \"xie\" }\nassert my_solution.findMinimumOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"gzd\", \"s2\": \"bcju\", \"s3\": \"db\" }\nassert my_solution.findMinimumOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"cbba\", \"s2\": \"cbaa\", \"s3\": \"c\" }\nassert my_solution.findMinimumOperations(**test_input) == 6\n\ntest_input = { \"s1\": \"k\", \"s2\": \"kfb\", \"s3\": \"krcnf\" }\nassert my_solution.findMinimumOperations(**test_input) == 6\
|
|||
|
{"task_id": "weekly-contest-372-separate-black-and-white-balls", "url": "https://leetcode.com/problems/separate-black-and-white-balls", "title": "separate-black-and-white-balls", "meta": {"questionId": "3195", "questionFrontendId": "2938", "title": "Separate Black and White Balls", "titleSlug": "separate-black-and-white-balls", "isPaidOnly": false, "difficulty": "Medium", "likes": 133, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n桌子上有 n 个球,每个球的颜色不是黑色,就是白色。\n给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。\n在每一步中,你可以选择两个相邻的球并交换它们。\n返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数」。\n\n示例 1:\n\n输入:s = \"101\"\n输出:1\n解释:我们可以按以下方式将所有黑色球移到右侧:\n- 交换 s[0] 和 s[1],s = \"011\"。\n最开始,1 没有都在右侧,需要至少 1 步将其移到右侧。\n示例 2:\n\n输入:s = \"100\"\n输出:2\n解释:我们可以按以下方式将所有黑色球移到右侧:\n- 交换 s[0] 和 s[1],s = \"010\"。\n- 交换 s[1] 和 s[2],s = \"001\"。\n可以证明所需的最小步数为 2 。\n\n示例 3:\n\n输入:s = \"0111\"\n输出:0\n解释:所有黑色球都已经在右侧。\n\n\n提示:\n\n1 <= n == s.length <= 105\ns[i] 不是 '0',就是 '1'。\n\"\"\"\nclass Solution:\n def minimumSteps(self, s: str) -> int:\n ", "prompt_sft": "桌子上有 n 个球,每个球的颜色不是黑色,就是白色。\n给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。\n在每一步中,你可以选择两个相邻的球并交换它们。\n返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数」。\n\n示例 1:\n\n输入:s = \"101\"\n输出:1\n解释:我们可以按以下方式将所有黑色球移到右侧:\n- 交换 s[0] 和 s[1],s = \"011\"。\n最开始,1 没有都在右侧,需要至少 1 步将其移到右侧。\n示例 2:\n\n输入:s = \"100\"\n输出:2\n解释:我们可以按以下方式将所有黑色球移到右侧:\n- 交换 s[0] 和 s[1],s = \"010\"。\n- 交换 s[1] 和 s[2],s = \"001\"。\n可以证明所需的最小步数为 2 。\n\n示例 3:\n\n输入:s = \"0111\"\n输出:0\n解释:所有黑色球都已经在右侧。\n\n\n提示:\n\n1 <= n == s.length <= 105\ns[i] 不是 '0',就是 '1'。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumSteps(self, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"101\" }\nassert my_solution.minimumSteps(**test_input) == 1\n\ntest_input = { \"s\": \"100\" }\nassert my_solution.minimumSteps(**test_input) == 2\n\ntest_input = { \"s\": \"0111\" }\nassert my_solution.minimumSteps(**test_input) == 0\n\ntest_input = { \"s\": \"11000111\" }\nassert my_solution.minimumSteps(**test_input) == 6\n\ntest_input = { \"s\": \"01010001\" }\nassert my_solution.minimumSteps(**test_input) == 7\n\ntest_input = { \"s\": \"0100101\" }\nassert my_solution.minimumSteps(**test_input) == 4\n\ntest_input = { \"s\": \"111111111100100010\" }\nassert my_solution.minimumSteps(**test_input) == 65\n\ntest_input = { \"s\": \"10100000110010011010\" }\nassert my_solution.minimumSteps(**test_input) == 44\n\ntest_input = { \"s\": \"1101110000111011110\" }\nassert my_solution.minimumSteps(**test_input) == 42\n\ntest_input = { \"s\": \"01000010111010001\" }\nassert my_solution.minimumSteps(**test_input) == 29\n\ntest_input = { \"s\": \"11110\" }\nassert my_solution.minimumSteps(**test_input) == 4\n\ntest_input = { \"s\": \"010001001011010\" }\nassert my_solution.minimumSteps(**test_input) == 21\n\ntest_input = { \"s\": \"0011011\" }\nassert my_solution.minimumSteps(**test_input) == 2\n\ntest_input = { \"s\": \"001\" }\nassert my_solution.minimumSteps(
|
|||
|
{"task_id": "weekly-contest-372-maximum-xor-product", "url": "https://leetcode.com/problems/maximum-xor-product", "title": "maximum-xor-product", "meta": {"questionId": "3192", "questionFrontendId": "2939", "title": "Maximum Xor Product", "titleSlug": "maximum-xor-product", "isPaidOnly": false, "difficulty": "Medium", "likes": 140, "dislikes": 63, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个整数a,b和n,请你返回(a XOR x) * (b XOR x)的最大值且 x需要满足 0 <= x < 2n。\n由于答案可能会很大,返回它对109 + 7取余后的结果。\n注意,XOR是按位异或操作。\n\n示例 1:\n\n输入:a = 12, b = 5, n = 4\n输出:98\n解释:当 x = 2 时,(a XOR x) = 14 且 (b XOR x) = 7 。所以,(a XOR x) * (b XOR x) = 98 。\n98 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n\n示例 2:\n\n输入:a = 6, b = 7 , n = 5\n输出:930\n解释:当 x = 25 时,(a XOR x) = 31 且 (b XOR x) = 30 。所以,(a XOR x) * (b XOR x) = 930 。\n930 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n示例 3:\n\n输入:a = 1, b = 6, n = 3\n输出:12\n解释: 当 x = 5 时,(a XOR x) = 4 且 (b XOR x) = 3 。所以,(a XOR x) * (b XOR x) = 12 。\n12 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n\n\n提示:\n\n0 <= a, b < 250\n0 <= n <= 50\n\"\"\"\nclass Solution:\n def maximumXorProduct(self, a: int, b: int, n: int) -> int:\n ", "prompt_sft": "给你三个整数a,b和n,请你返回(a XOR x) * (b XOR x)的最大值且 x需要满足 0 <= x < 2n。\n由于答案可能会很大,返回它对109 + 7取余后的结果。\n注意,XOR是按位异或操作。\n\n示例 1:\n\n输入:a = 12, b = 5, n = 4\n输出:98\n解释:当 x = 2 时,(a XOR x) = 14 且 (b XOR x) = 7 。所以,(a XOR x) * (b XOR x) = 98 。\n98 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n\n示例 2:\n\n输入:a = 6, b = 7 , n = 5\n输出:930\n解释:当 x = 25 时,(a XOR x) = 31 且 (b XOR x) = 30 。所以,(a XOR x) * (b XOR x) = 930 。\n930 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n示例 3:\n\n输入:a = 1, b = 6, n = 3\n输出:12\n解释: 当 x = 5 时,(a XOR x) = 4 且 (b XOR x) = 3 。所以,(a XOR x) * (b XOR x) = 12 。\n12 是所有满足 0 <= x < 2n 中 (a XOR x) * (b XOR x) 的最大值。\n\n\n提示:\n\n0 <= a, b < 250\n0 <= n <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumXorProduct(self, a: int, b: int, n: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"a\": 12, \"b\": 5, \"n\": 4 }\nassert my_solution.maximumXorProduct(**test_input) == 98\n\ntest_input = { \"a\": 6, \"b\": 7, \"n\": 5 }\nassert my_solution.maximumXorProduct(**test_input) == 930\n\ntest_input = { \"a\": 1, \"b\": 6, \"n\": 3 }\nassert my_solution.maximumXorProduct(**test_input) == 12\n\ntest_input = { \"a\": 0, \"b\": 0, \"n\": 1 }\nassert my_solution.maximumXorProduct(**test_input) == 1\n\ntest_input = { \"a\": 0, \"b\": 1, \"n\": 6 }\nassert my_solution.maximumXorProduct(**test_input) == 3906\n\ntest_input = { \"a\": 0, \"b\": 2, \"n\": 7 }\nassert my_solution.maximumXorProduct(**test_input) == 15875\n\ntest_input = { \"a\": 0, \"b\": 3, \"n\": 1 }\nassert my_solution.maximumXorProduct(**test_input) == 2\n\ntest_input = { \"a\": 0, \"b\": 4, \"n\": 0 }\nassert my_solution.maximumXorProduct(**test_input) == 0\n\ntest_input = { \"a\": 0, \"b\": 5, \"n\": 6 }\nassert my_solution.maximumXorProduct(**test_input) == 3658\n\ntest_input = { \"a\": 0, \"b\": 6, \"n\": 1 }\nassert my_solution.maximumXorProduct(**test_input) == 7\n\ntest_input = { \"a\": 0, \"b\": 7, \"n\": 2 }\nassert my_solution.maximumXorProduct(**test_input) == 12\n\ntest_input = { \"a\": 0, \"b\": 8, \"n\": 5 }\nassert my_solution.maximumXorProduct(**test_input) == 713\n\ntest_input = { \"a\": 0, \"b\": 9, \"n\": 2 }\nassert my_solution.maximumXorProduct(**test_input) == 30\n\ntest_input = { \"a\":
|
|||
|
{"task_id": "weekly-contest-372-find-building-where-alice-and-bob-can-meet", "url": "https://leetcode.com/problems/find-building-where-alice-and-bob-can-meet", "title": "find-building-where-alice-and-bob-can-meet", "meta": {"questionId": "3181", "questionFrontendId": "2940", "title": "Find Building Where Alice and Bob Can Meet", "titleSlug": "find-building-where-alice-and-bob-can-meet", "isPaidOnly": false, "difficulty": "Hard", "likes": 171, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0开始的正整数数组heights,其中heights[i]表示第 i栋建筑的高度。\n如果一个人在建筑i,且存在i < j的建筑j满足heights[i] < heights[j],那么这个人可以移动到建筑j。\n给你另外一个数组queries,其中queries[i] = [ai, bi]。第i个查询中,Alice 在建筑ai ,Bob 在建筑bi。\n请你能返回一个数组ans,其中ans[i]是第i个查询中,Alice 和 Bob 可以相遇的最左边的建筑。如果对于查询i,Alice 和 Bob 不能相遇,令ans[i] 为-1。\n\n示例 1:\n\n输入:heights = [6,4,8,5,2,7], queries = [[0,1],[0,3],[2,4],[3,4],[2,2]]\n输出:[2,5,-1,5,2]\n解释:第一个查询中,Alice 和 Bob 可以移动到建筑 2 ,因为 heights[0] < heights[2] 且 heights[1] < heights[2] 。\n第二个查询中,Alice 和 Bob 可以移动到建筑 5 ,因为 heights[0] < heights[5] 且 heights[3] < heights[5] 。\n第三个查询中,Alice 无法与 Bob 相遇,因为 Alice 不能移动到任何其他建筑。\n第四个查询中,Alice 和 Bob 可以移动到建筑 5 ,因为 heights[3] < heights[5] 且 heights[4] < heights[5] 。\n第五个查询中,Alice 和 Bob 已经在同一栋建筑中。\n对于 ans[i] != -1 ,ans[i] 是 Alice 和 Bob 可以相遇的建筑中最左边建筑的下标。\n对于 ans[i] == -1 ,不存在 Alice 和 Bob 可以相遇的建筑。\n\n示例 2:\n\n输入:heights = [5,3,8,2,6,1,4,6], queries = [[0,7],[3,5],[5,2],[3,0],[1,6]]\n输出:[7,6,-1,4,6]\n解释:第一个查询中,Alice 可以直接移动到 Bob 的建筑,因为 heights[0] < heights[7] 。\n第二个查询中,Alice 和 Bob 可以移动到建筑 6 ,因为 heights[3] < heights[6] 且 heights[5] < heights[6] 。\n第三个查询中,Alice 无法与 Bob 相遇,因为 Bob 不能移动到任何其他建筑。\n第四个查询中,Alice 和 Bob 可以移动到建筑 4 ,因为 heights[3] < heights[4] 且 heights[0] < heights[4] 。\n第五个查询中,Alice 可以直接移动到 Bob 的建筑,因为 heights[1] < heights[6] 。\n对于 ans[i] != -1 ,ans[i] 是 Alice 和 Bob 可以相遇的建筑中最左边建筑的下标。\n对于 ans[i] == -1 ,不存在 Alice 和 Bob 可以相遇的建筑。\n\n\n提示:\n\n1 <= heights.length <= 5 * 104\n1 <= heights[i] <= 109\n1 <= queries.length <= 5 * 104\nqueries[i] = [ai, bi]\n0 <= ai, bi <= heights.length - 1\n\"\"\"\nclass Solution:\n def leftmostBuildingQueries(self, heights: List[int], queries: List[List[int]]) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0开始的正整数数组heights,其中heights[i]表示第 i栋建筑的高度。\n如果一个人在建筑i,且存在i < j的建筑j满足heights[i] < heights[j],那么这个人可以移动到建筑j。\n给你另外一个数组queries,其中queries[i] = [ai, bi]。第i个查询中,Alice 在建筑ai ,Bob 在建筑bi。\n请你能返回一个数组ans,其中ans[i]是第i个查询中,Alice 和 Bob 可以相遇的最左边的建筑。如果对于查询i,Alice 和 Bob 不能相遇,令ans[i] 为-1。\n\n示例 1:\n\n输入:heights = [6,4,8,5,2,7], queries = [[0,1],[0,3],[2,4],[3,4],[2,2]]\n输出:[2,5,-1,5,2]\n解释:第一个查询中,Alice 和 Bob 可以移动到建筑 2 ,因为 heights[0] < heights[2] 且 heights[1] < heights[2] 。\n第二个查询中,Alice 和 Bob 可以移动到建筑 5 ,因为 heights[0] < heights[5] 且 heights[3] < heights[5] 。\n第三个查询中,Alice 无法与 Bob 相遇,因为 Alice 不能移动到任何其他建筑<E5BBBA><E7AD91>
|
|||
|
{"task_id": "weekly-contest-371-maximum-strong-pair-xor-i", "url": "https://leetcode.com/problems/maximum-strong-pair-xor-i", "title": "maximum-strong-pair-xor-i", "meta": {"questionId": "3193", "questionFrontendId": "2932", "title": "Maximum Strong Pair XOR I", "titleSlug": "maximum-strong-pair-xor-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 77, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :\n\n|x - y| <= min(x, y)\n\n你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。\n返回数组 nums 所有可能的强数对中的 最大 异或值。\n注意,你可以选择同一个整数两次来形成一个强数对。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:7\n解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。\n这些强数对中的最大异或值是 3 XOR 4 = 7 。\n\n示例 2:\n\n输入:nums = [10,100]\n输出:0\n解释:数组 nums 中有 2 个强数对:(10, 10) 和 (100, 100) 。\n这些强数对中的最大异或值是 10 XOR 10 = 0 ,数对 (100, 100) 的异或值也是 100 XOR 100 = 0 。\n\n示例 3:\n\n输入:nums = [5,6,25,30]\n输出:7\n解释:数组 nums 中有 6 个强数对:(5, 5), (5, 6), (6, 6), (25, 25), (25, 30) 和 (30, 30) 。\n这些强数对中的最大异或值是 25 XOR 30 = 7 ;另一个异或值非零的数对是 (5, 6) ,其异或值是 5 XOR 6 = 3 。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 100\n\"\"\"\nclass Solution:\n def maximumStrongPairXor(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :\n\n|x - y| <= min(x, y)\n\n你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。\n返回数组 nums 所有可能的强数对中的 最大 异或值。\n注意,你可以选择同一个整数两次来形成一个强数对。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:7\n解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。\n这些强数对中的最大异或值是 3 XOR 4 = 7 。\n\n示例 2:\n\n输入:nums = [10,100]\n输出:0\n解释:数组 nums 中有 2 个强数对:(10, 10) 和 (100, 100) 。\n这些强数对中的最大异或值是 10 XOR 10 = 0 ,数对 (100, 100) 的异或值也是 100 XOR 100 = 0 。\n\n示例 3:\n\n输入:nums = [5,6,25,30]\n输出:7\n解释:数组 nums 中有 6 个强数对:(5, 5), (5, 6), (6, 6), (25, 25), (25, 30) 和 (30, 30) 。\n这些强数对中的最大异或值是 25 XOR 30 = 7 ;另一个异或值非零的数对是 (5, 6) ,其异或值是 5 XOR 6 = 3 。\n\n\n提示:\n\n1 <= nums.length <= 50\n1 <= nums[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumStrongPairXor(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4,5] }\nassert my_solution.maximumStrongPairXor(**test_input) == 7\n\ntest_input = { \"nums\": [10,100] }\nassert my_solution.maximumStrongPairXor(**test_input) == 0\n\ntest_input = { \"nums\": [5,6,25,30] }\nassert my_solution.maximumStrongPairXor(**test_input) == 7\n\ntest_input = { \"nums\": [1] }\nassert my_solution.maximumStrongPairXor(**test_input) == 0\n\ntest_input = { \"nums\": [100] }\nassert my_solution.maximumStrongPairXor(**test_input) == 0\n\ntest_input = { \"nums\": [1,1,2,3,5] }\nassert my_solution.maximumStrongPairXor(**test_input) == 6\n\ntest_input = { \"nums\": [1,1,3,8,7] }\nassert my_solution.
|
|||
|
{"task_id": "weekly-contest-371-high-access-employees", "url": "https://leetcode.com/problems/high-access-employees", "title": "high-access-employees", "meta": {"questionId": "3202", "questionFrontendId": "2933", "title": "High-Access Employees", "titleSlug": "high-access-employees", "isPaidOnly": false, "difficulty": "Medium", "likes": 110, "dislikes": 14, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 、下标从 0 开始的二维字符串数组 access_times 。对于每个 i(0 <= i <= n - 1 ),access_times[i][0] 表示某位员工的姓名,access_times[i][1] 表示该员工的访问时间。access_times 中的所有条目都发生在同一天内。\n访问时间用 四位 数字表示, 符合 24 小时制 ,例如 \"0800\" 或 \"2250\" 。\n如果员工在 同一小时内 访问系统 三次或更多 ,则称其为 高访问 员工。\n时间间隔正好相差一小时的时间 不 被视为同一小时内。例如,\"0815\" 和 \"0915\" 不属于同一小时内。\n一天开始和结束时的访问时间不被计算为同一小时内。例如,\"0005\" 和 \"2350\" 不属于同一小时内。\n以列表形式,按任意顺序,返回所有 高访问 员工的姓名。\n\n示例 1:\n\n输入:access_times = [[\"a\",\"0549\"],[\"b\",\"0457\"],[\"a\",\"0532\"],[\"a\",\"0621\"],[\"b\",\"0540\"]]\n输出:[\"a\"]\n解释:\"a\" 在时间段 [05:32, 06:31] 内有三条访问记录,时间分别为 05:32 、05:49 和 06:21 。\n但是 \"b\" 的访问记录只有两条。\n因此,答案是 [\"a\"] 。\n示例 2:\n\n输入:access_times = [[\"d\",\"0002\"],[\"c\",\"0808\"],[\"c\",\"0829\"],[\"e\",\"0215\"],[\"d\",\"1508\"],[\"d\",\"1444\"],[\"d\",\"1410\"],[\"c\",\"0809\"]]\n输出:[\"c\",\"d\"]\n解释:\"c\" 在时间段 [08:08, 09:07] 内有三条访问记录,时间分别为 08:08 、08:09 和 08:29 。\n\"d\" 在时间段 [14:10, 15:09] 内有三条访问记录,时间分别为 14:10 、14:44 和 15:08 。\n然而,\"e\" 只有一条访问记录,因此不能包含在答案中,最终答案是 [\"c\",\"d\"] 。\n示例 3:\n\n输入:access_times = [[\"cd\",\"1025\"],[\"ab\",\"1025\"],[\"cd\",\"1046\"],[\"cd\",\"1055\"],[\"ab\",\"1124\"],[\"ab\",\"1120\"]]\n输出:[\"ab\",\"cd\"]\n解释:\"ab\"在时间段 [10:25, 11:24] 内有三条访问记录,时间分别为 10:25 、11:20 和 11:24 。\n\"cd\" 在时间段 [10:25, 11:24] 内有三条访问记录,时间分别为 10:25 、10:46 和 10:55 。\n因此,答案是 [\"ab\",\"cd\"] 。\n\n提示:\n\n1 <= access_times.length <= 100\naccess_times[i].length == 2\n1 <= access_times[i][0].length <= 10\naccess_times[i][0] 仅由小写英文字母组成。\naccess_times[i][1].length == 4\naccess_times[i][1] 采用24小时制表示时间。\naccess_times[i][1] 仅由数字 '0' 到 '9' 组成。\n\"\"\"\nclass Solution:\n def findHighAccessEmployees(self, access_times: List[List[str]]) -> List[str]:\n ", "prompt_sft": "给你一个长度为 n 、下标从 0 开始的二维字符串数组 access_times 。对于每个 i(0 <= i <= n - 1 ),access_times[i][0] 表示某位员工的姓名,access_times[i][1] 表示该员工的访问时间。access_times 中的所有条目都发生在同一天内。\n访问时间用 四位 数字表示, 符合 24 小时制 ,例如 \"0800\" 或 \"2250\" 。\n如果员工在 同一小时内 访问系统 三次或更多 ,则称其为 高访问 员工。\n时间间隔正好相差一小时的时间 不 被视为同一小时内。例如,\"0815\" 和 \"0915\" 不属于同一小时内。\n一天开始和结束时的访问时间不被计算为同一小时内。例如,\"0005\" 和 \"2350\" 不属于同一小时内。\n以列表形式,按任意顺序,返回所有 高访问 员工的姓名。\n\n示例 1:\n\n输入:access_times = [[\"a\",\"0549\"],[\"b\",\"0457\"],[\"a\",\"0532\"],[\"a\",\"0621\"],[\"b\",\"0540\"]]\n输出:[\"a\"]\n解释:\"a\" 在时间段 [05:32, 06:31] 内有三条访问记录,时间分别为 05:32 、05:49 和 06:21 。\n但是 \"b\"
|
|||
|
{"task_id": "weekly-contest-371-minimum-operations-to-maximize-last-elements-in-arrays", "url": "https://leetcode.com/problems/minimum-operations-to-maximize-last-elements-in-arrays", "title": "minimum-operations-to-maximize-last-elements-in-arrays", "meta": {"questionId": "3190", "questionFrontendId": "2934", "title": "Minimum Operations to Maximize Last Elements in Arrays", "titleSlug": "minimum-operations-to-maximize-last-elements-in-arrays", "isPaidOnly": false, "difficulty": "Medium", "likes": 152, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,这两个数组的长度都是 n 。\n你可以执行一系列 操作(可能不执行)。\n在每次操作中,你可以选择一个在范围 [0, n - 1] 内的下标 i ,并交换 nums1[i] 和 nums2[i] 的值。\n你的任务是找到满足以下条件所需的 最小 操作次数:\n\nnums1[n - 1] 等于 nums1 中所有元素的 最大值 ,即 nums1[n - 1] = max(nums1[0], nums1[1], ..., nums1[n - 1]) 。\nnums2[n - 1] 等于 nums2 中所有元素的 最大值 ,即 nums2[n - 1] = max(nums2[0], nums2[1], ..., nums2[n - 1]) 。\n\n以整数形式,表示并返回满足上述 全部 条件所需的 最小 操作次数,如果无法同时满足两个条件,则返回 -1 。\n\n示例 1:\n\n输入:nums1 = [1,2,7],nums2 = [4,5,3]\n输出:1\n解释:在这个示例中,可以选择下标 i = 2 执行一次操作。\n交换 nums1[2] 和 nums2[2] 的值,nums1 变为 [1,2,3] ,nums2 变为 [4,5,7] 。\n同时满足两个条件。\n可以证明,需要执行的最小操作次数为 1 。\n因此,答案是 1 。\n\n示例 2:\n\n输入:nums1 = [2,3,4,5,9],nums2 = [8,8,4,4,4]\n输出:2\n解释:在这个示例中,可以执行以下操作:\n首先,选择下标 i = 4 执行操作。\n交换 nums1[4] 和 nums2[4] 的值,nums1 变为 [2,3,4,5,4] ,nums2 变为 [8,8,4,4,9] 。\n然后,选择下标 i = 3 执行操作。\n交换 nums1[3] 和 nums2[3] 的值,nums1 变为 [2,3,4,4,4] ,nums2 变为 [8,8,4,5,9] 。\n同时满足两个条件。 \n可以证明,需要执行的最小操作次数为 2 。 \n因此,答案是 2 。\n\n示例 3:\n\n输入:nums1 = [1,5,4],nums2 = [2,5,3]\n输出:-1\n解释:在这个示例中,无法同时满足两个条件。\n因此,答案是 -1 。\n\n\n提示:\n\n1 <= n == nums1.length == nums2.length <= 1000\n1 <= nums1[i] <= 109\n1 <= nums2[i] <= 109\n\"\"\"\nclass Solution:\n def minOperations(self, nums1: List[int], nums2: List[int]) -> int:\n ", "prompt_sft": "给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,这两个数组的长度都是 n 。\n你可以执行一系列 操作(可能不执行)。\n在每次操作中,你可以选择一个在范围 [0, n - 1] 内的下标 i ,并交换 nums1[i] 和 nums2[i] 的值。\n你的任务是找到满足以下条件所需的 最小 操作次数:\n\nnums1[n - 1] 等于 nums1 中所有元素的 最大值 ,即 nums1[n - 1] = max(nums1[0], nums1[1], ..., nums1[n - 1]) 。\nnums2[n - 1] 等于 nums2 中所有元素的 最大值 ,即 nums2[n - 1] = max(nums2[0], nums2[1], ..., nums2[n - 1]) 。\n\n以整数形式,表示并返回满足上述 全部 条件所需的 最小 操作次数,如果无法同时满足两个条件,则返回 -1 。\n\n示例 1:\n\n输入:nums1 = [1,2,7],nums2 = [4,5,3]\n输出:1\n解释:在这个示例中,可以选择下标 i = 2 执行一次操作。\n交换 nums1[2] 和 nums2[2] 的值,nums1 变为 [1,2,3] ,nums2 变为 [4,5,7] 。\n同时满足两个条件。\n可以证明,需要执行的最小操作次数为 1 。\n因此,答案是 1 。\n\n示例 2:\n\n输入:nums1 = [2,3,4,5,9],nums2 = [8,8,4,4,4]\n输出:2\n解释:在这个示例中,可以执行以下操作:\n首先,选择下标 i = 4 执行操作。\n交换 nums1[4] 和 nums2[4] 的值,nums1 变为 [2,3,4,5,4] ,nums2 变为 [8,8,4,4,9] 。\n然后,选择下标 i = 3 执行操作。\n交换 nums1[3] 和 nums2[3] 的
|
|||
|
{"task_id": "weekly-contest-371-maximum-strong-pair-xor-ii", "url": "https://leetcode.com/problems/maximum-strong-pair-xor-ii", "title": "maximum-strong-pair-xor-ii", "meta": {"questionId": "3197", "questionFrontendId": "2935", "title": "Maximum Strong Pair XOR II", "titleSlug": "maximum-strong-pair-xor-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 140, "dislikes": 1, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :\n\n|x - y| <= min(x, y)\n\n你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。\n返回数组 nums 所有可能的强数对中的 最大 异或值。\n注意,你可以选择同一个整数两次来形成一个强数对。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:7\n解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。\n这些强数对中的最大异或值是 3 XOR 4 = 7 。\n\n示例 2:\n\n输入:nums = [10,100]\n输出:0\n解释:数组 nums 中有 2 个强数对:(10, 10) 和 (100, 100) 。\n这些强数对中的最大异或值是 10 XOR 10 = 0 ,数对 (100, 100) 的异或值也是 100 XOR 100 = 0 。\n\n示例 3:\n\n输入:nums = [500,520,2500,3000]\n输出:1020\n解释:数组 nums 中有 6 个强数对:(500, 500), (500, 520), (520, 520), (2500, 2500), (2500, 3000) 和 (3000, 3000) 。\n这些强数对中的最大异或值是 500 XOR 520 = 1020 ;另一个异或值非零的数对是 (5, 6) ,其异或值是 2500 XOR 3000 = 636 。\n\n\n提示:\n\n1 <= nums.length <= 5 * 104\n1 <= nums[i] <= 220 - 1\n\"\"\"\nclass Solution:\n def maximumStrongPairXor(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :\n\n|x - y| <= min(x, y)\n\n你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。\n返回数组 nums 所有可能的强数对中的 最大 异或值。\n注意,你可以选择同一个整数两次来形成一个强数对。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5]\n输出:7\n解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。\n这些强数对中的最大异或值是 3 XOR 4 = 7 。\n\n示例 2:\n\n输入:nums = [10,100]\n输出:0\n解释:数组 nums 中有 2 个强数对:(10, 10) 和 (100, 100) 。\n这些强数对中的最大异或值是 10 XOR 10 = 0 ,数对 (100, 100) 的异或值也是 100 XOR 100 = 0 。\n\n示例 3:\n\n输入:nums = [500,520,2500,3000]\n输出:1020\n解释:数组 nums 中有 6 个强数对:(500, 500), (500, 520), (520, 520), (2500, 2500), (2500, 3000) 和 (3000, 3000) 。\n这些强数对中的最大异或值是 500 XOR 520 = 1020 ;另一个异或值非零的数对是 (5, 6) ,其异或值是 2500 XOR 3000 = 636 。\n\n\n提示:\n\n1 <= nums.length <= 5 * 104\n1 <= nums[i] <= 220 - 1\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumStrongPairXor(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4,5] }\nassert my_solution.maximumStrongPairXor(**test_input) == 7\n\ntest_input = { \"nums\": [10,100] }\nassert my_solution.maximumStrongPairXor(**test_input) == 0\n\ntest_input = { \"nums\": [500,520,2500,3000] }\nassert my_solution.maximumStrongPairXor(**test_input) == 1020\n\ntest_input = { \"nums\": [1] }\nassert my_solution.maximumStrongPairXor(**test_input) == 0\n\ntest_input = { \"nums\": [2,3] }\nassert my_solution.maximumStrongPairXor(**test_input) == 1\n\ntest_input = { \"nums\": [3,4]
|
|||
|
{"task_id": "biweekly-contest-117-distribute-candies-among-children-i", "url": "https://leetcode.com/problems/distribute-candies-among-children-i", "title": "distribute-candies-among-children-i", "meta": {"questionId": "3199", "questionFrontendId": "2928", "title": "Distribute Candies Among Children I", "titleSlug": "distribute-candies-among-children-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 50, "dislikes": 25, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数 n 和 limit 。\n\n请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。\n\n示例 1:\n\n输入:n = 5, limit = 2\n输出:3\n解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。\n\n示例 2:\n\n输入:n = 3, limit = 3\n输出:10\n解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。\n\n\n提示:\n\n * 1 <= n <= 50\n * 1 <= limit <= 50\n\"\"\"\nclass Solution:\n def distributeCandies(self, n: int, limit: int) -> int:\n ", "prompt_sft": "给你两个正整数 n 和 limit 。\n\n请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。\n\n示例 1:\n\n输入:n = 5, limit = 2\n输出:3\n解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。\n\n示例 2:\n\n输入:n = 3, limit = 3\n输出:10\n解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。\n\n\n提示:\n\n * 1 <= n <= 50\n * 1 <= limit <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def distributeCandies(self, n: int, limit: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 5, \"limit\": 2 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 3, \"limit\": 3 }\nassert my_solution.distributeCandies(**test_input) == 10\n\ntest_input = { \"n\": 1, \"limit\": 1 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 2 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 3 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 4 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 5 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 6 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 7 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 8 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 9 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 10 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 11 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 12 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 13 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 14 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 15 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 16 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\
|
|||
|
{"task_id": "biweekly-contest-117-distribute-candies-among-children-ii", "url": "https://leetcode.com/problems/distribute-candies-among-children-ii", "title": "distribute-candies-among-children-ii", "meta": {"questionId": "3201", "questionFrontendId": "2929", "title": "Distribute Candies Among Children II", "titleSlug": "distribute-candies-among-children-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 62, "dislikes": 95, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数 n 和 limit 。\n\n请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。\n\n示例 1:\n\n输入:n = 5, limit = 2\n输出:3\n解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。\n\n示例 2:\n\n输入:n = 3, limit = 3\n输出:10\n解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。\n\n\n提示:\n\n * 1 <= n <= 106\n * 1 <= limit <= 106\n\"\"\"\nclass Solution:\n def distributeCandies(self, n: int, limit: int) -> int:\n ", "prompt_sft": "给你两个正整数 n 和 limit 。\n\n请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。\n\n示例 1:\n\n输入:n = 5, limit = 2\n输出:3\n解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。\n\n示例 2:\n\n输入:n = 3, limit = 3\n输出:10\n解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。\n\n\n提示:\n\n * 1 <= n <= 106\n * 1 <= limit <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def distributeCandies(self, n: int, limit: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 5, \"limit\": 2 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 3, \"limit\": 3 }\nassert my_solution.distributeCandies(**test_input) == 10\n\ntest_input = { \"n\": 1, \"limit\": 1 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 2 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 3 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 4 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 5 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 6 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 7 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 8 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 9 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 10 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 11 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 12 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 13 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 14 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 15 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_input = { \"n\": 1, \"limit\": 16 }\nassert my_solution.distributeCandies(**test_input) == 3\n\ntest_inp
|
|||
|
{"task_id": "biweekly-contest-117-number-of-strings-which-can-be-rearranged-to-contain-substring", "url": "https://leetcode.com/problems/number-of-strings-which-can-be-rearranged-to-contain-substring", "title": "number-of-strings-which-can-be-rearranged-to-contain-substring", "meta": {"questionId": "3200", "questionFrontendId": "2930", "title": "Number of Strings Which Can Be Rearranged to Contain Substring", "titleSlug": "number-of-strings-which-can-be-rearranged-to-contain-substring", "isPaidOnly": false, "difficulty": "Medium", "likes": 119, "dislikes": 54, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数 n 。\n\n如果一个字符串 s 只包含小写英文字母,且 将 s 的字符重新排列后,新字符串包含 子字符串 \"leet\" ,那么我们称字符串 s 是一个 好 字符串。\n\n比方说:\n\n * 字符串 \"lteer\" 是好字符串,因为重新排列后可以得到 \"leetr\" 。\n * \"letl\" 不是好字符串,因为无法重新排列并得到子字符串 \"leet\" 。\n\n请你返回长度为 n 的好字符串 总 数目。\n\n由于答案可能很大,将答案对 109 + 7 取余 后返回。\n\n子字符串 是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:n = 4\n输出:12\n解释:总共有 12 个字符串重新排列后包含子字符串 \"leet\" :\"eelt\" ,\"eetl\" ,\"elet\" ,\"elte\" ,\"etel\" ,\"etle\" ,\"leet\" ,\"lete\" ,\"ltee\" ,\"teel\" ,\"tele\" 和 \"tlee\" 。\n\n示例 2:\n\n输入:n = 10\n输出:83943898\n解释:长度为 10 的字符串重新排列后包含子字符串 \"leet\" 的方案数为 526083947580 。所以答案为 526083947580 % (109 + 7) = 83943898 。\n\n\n提示:\n\n * 1 <= n <= 105\n\"\"\"\nclass Solution:\n def stringCount(self, n: int) -> int:\n ", "prompt_sft": "给你一个整数 n 。\n\n如果一个字符串 s 只包含小写英文字母,且 将 s 的字符重新排列后,新字符串包含 子字符串 \"leet\" ,那么我们称字符串 s 是一个 好 字符串。\n\n比方说:\n\n * 字符串 \"lteer\" 是好字符串,因为重新排列后可以得到 \"leetr\" 。\n * \"letl\" 不是好字符串,因为无法重新排列并得到子字符串 \"leet\" 。\n\n请你返回长度为 n 的好字符串 总 数目。\n\n由于答案可能很大,将答案对 109 + 7 取余 后返回。\n\n子字符串 是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:n = 4\n输出:12\n解释:总共有 12 个字符串重新排列后包含子字符串 \"leet\" :\"eelt\" ,\"eetl\" ,\"elet\" ,\"elte\" ,\"etel\" ,\"etle\" ,\"leet\" ,\"lete\" ,\"ltee\" ,\"teel\" ,\"tele\" 和 \"tlee\" 。\n\n示例 2:\n\n输入:n = 10\n输出:83943898\n解释:长度为 10 的字符串重新排列后包含子字符串 \"leet\" 的方案数为 526083947580 。所以答案为 526083947580 % (109 + 7) = 83943898 。\n\n\n提示:\n\n * 1 <= n <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def stringCount(self, n: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 4 }\nassert my_solution.stringCount(**test_input) == 12\n\ntest_input = { \"n\": 10 }\nassert my_solution.stringCount(**test_input) == 83943898\n\ntest_input = { \"n\": 1 }\nassert my_solution.stringCount(**test_input) == 0\n\ntest_input = { \"n\": 2 }\nassert my_solution.stringCount(**test_input) == 0\n\ntest_input = { \"n\": 3 }\nassert my_solution.stringCount(**test_input) == 0\n\ntest_input = { \"n\": 5 }\nassert my_solution.stringCount(**test_input) == 1460\n\ntest_input = { \"n\": 6 }\nassert my_solution.stringCount(**test_input) == 106620\n\ntest_input = { \"n\": 7 }\nassert my_solution.stringCount(**test_input) == 6058192\n\ntest_input = { \"n\": 8 }\nassert my_solution.stringCount(**test_input) == 295164156\n\ntest_input = { \"n\": 9 }\nassert my_solution.stringCount(**test_input) == 947613240\n\ntest_input = { \"n\": 11 }\nassert m
|
|||
|
{"task_id": "biweekly-contest-117-maximum-spending-after-buying-items", "url": "https://leetcode.com/problems/maximum-spending-after-buying-items", "title": "maximum-spending-after-buying-items", "meta": {"questionId": "3107", "questionFrontendId": "2931", "title": "Maximum Spending After Buying Items", "titleSlug": "maximum-spending-after-buying-items", "isPaidOnly": false, "difficulty": "Hard", "likes": 66, "dislikes": 20, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始大小为 m * n 的整数矩阵 values ,表示 m 个不同商店里 m * n 件不同的物品。每个商店有 n 件物品,第 i 个商店的第 j 件物品的价值为 values[i][j] 。除此以外,第 i 个商店的物品已经按照价值非递增排好序了,也就是说对于所有 0 <= j < n - 1 都有 values[i][j] >= values[i][j + 1] 。\n\n每一天,你可以在一个商店里购买一件物品。具体来说,在第 d 天,你可以:\n\n * 选择商店 i 。\n * 购买数组中最右边的物品 j ,开销为 values[i][j] * d 。换句话说,选择该商店中还没购买过的物品中最大的下标 j ,并且花费 values[i][j] * d 去购买。\n\n注意,所有物品都视为不同的物品。比方说如果你已经从商店 1 购买了物品 0 ,你还可以在别的商店里购买其他商店的物品 0 。\n\n请你返回购买所有 m * n 件物品需要的 最大开销 。\n\n示例 1:\n\n输入:values = [[8,5,2],[6,4,1],[9,7,3]]\n输出:285\n解释:第一天,从商店 1 购买物品 2 ,开销为 values[1][2] * 1 = 1 。\n第二天,从商店 0 购买物品 2 ,开销为 values[0][2] * 2 = 4 。\n第三天,从商店 2 购买物品 2 ,开销为 values[2][2] * 3 = 9 。\n第四天,从商店 1 购买物品 1 ,开销为 values[1][1] * 4 = 16 。\n第五天,从商店 0 购买物品 1 ,开销为 values[0][1] * 5 = 25 。\n第六天,从商店 1 购买物品 0 ,开销为 values[1][0] * 6 = 36 。\n第七天,从商店 2 购买物品 1 ,开销为 values[2][1] * 7 = 49 。\n第八天,从商店 0 购买物品 0 ,开销为 values[0][0] * 8 = 64 。\n第九天,从商店 2 购买物品 0 ,开销为 values[2][0] * 9 = 81 。\n所以总开销为 285 。\n285 是购买所有 m * n 件物品的最大总开销。\n\n示例 2:\n\n输入:values = [[10,8,6,4,2],[9,7,5,3,2]]\n输出:386\n解释:第一天,从商店 0 购买物品 4 ,开销为 values[0][4] * 1 = 2 。\n第二天,从商店 1 购买物品 4 ,开销为 values[1][4] * 2 = 4 。\n第三天,从商店 1 购买物品 3 ,开销为 values[1][3] * 3 = 9 。\n第四天,从商店 0 购买物品 3 ,开销为 values[0][3] * 4 = 16 。\n第五天,从商店 1 购买物品 2 ,开销为 values[1][2] * 5 = 25 。\n第六天,从商店 0 购买物品 2 ,开销为 values[0][2] * 6 = 36 。\n第七天,从商店 1 购买物品 1 ,开销为 values[1][1] * 7 = 49 。\n第八天,从商店 0 购买物品 1 ,开销为 values[0][1] * 8 = 64 。\n第九天,从商店 1 购买物品 0 ,开销为 values[1][0] * 9 = 81 。\n第十天,从商店 0 购买物品 0 ,开销为 values[0][0] * 10 = 100 。\n所以总开销为 386 。\n386 是购买所有 m * n 件物品的最大总开销。\n\n\n提示:\n\n * 1 <= m == values.length <= 10\n * 1 <= n == values[i].length <= 104\n * 1 <= values[i][j] <= 106\n * values[i] 按照非递增顺序排序。\n\"\"\"\nclass Solution:\n def maxSpending(self, values: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始大小为 m * n 的整数矩阵 values ,表示 m 个不同商店里 m * n 件不同的物品。每个商店有 n 件物品,第 i 个商店的第 j 件物品的价值为 values[i][j] 。除此以外,第 i 个商店的物品已经按照价值非递增排好序了,也就是说对于所有 0 <= j < n - 1 都有 values[i][j] >= values[i][j + 1] 。\n\n每一天,你可以在一个商店里购买一件物品。具体来说,在第 d 天,你<EFBC8C><E4BDA0>
|
|||
|
{"task_id": "weekly-contest-370-find-champion-i", "url": "https://leetcode.com/problems/find-champion-i", "title": "find-champion-i", "meta": {"questionId": "3188", "questionFrontendId": "2923", "title": "Find Champion I", "titleSlug": "find-champion-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 84, "dislikes": 20, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。\n\n给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 <= i, j <= n - 1 且 i != j 的所有 i, j :如果 grid[i][j] == 1,那么 i 队比 j 队 强 ;否则,j 队比 i 队 强 。\n\n在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。\n\n返回这场比赛中将会成为冠军的队伍。\n\n示例 1:\n\n输入:grid = [[0,1],[0,0]]\n输出:0\n解释:比赛中有两支队伍。\ngrid[0][1] == 1 表示 0 队比 1 队强。所以 0 队是冠军。\n\n示例 2:\n\n输入:grid = [[0,0,1],[1,0,1],[0,0,0]]\n输出:1\n解释:比赛中有三支队伍。\ngrid[1][0] == 1 表示 1 队比 0 队强。\ngrid[1][2] == 1 表示 1 队比 2 队强。\n所以 1 队是冠军。\n\n\n提示:\n\n * n == grid.length\n * n == grid[i].length\n * 2 <= n <= 100\n * grid[i][j] 的值为 0 或 1\n * 对于所有 i, grid[i][i] 等于 0.\n * 对于满足 i != j 的所有 i, j ,grid[i][j] != grid[j][i] 均成立\n * 生成的输入满足:如果 a 队比 b 队强,b 队比 c 队强,那么 a 队比 c 队强\n\"\"\"\nclass Solution:\n def findChampion(self, grid: List[List[int]]) -> int:\n ", "prompt_sft": "一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。\n\n给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 <= i, j <= n - 1 且 i != j 的所有 i, j :如果 grid[i][j] == 1,那么 i 队比 j 队 强 ;否则,j 队比 i 队 强 。\n\n在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。\n\n返回这场比赛中将会成为冠军的队伍。\n\n示例 1:\n\n输入:grid = [[0,1],[0,0]]\n输出:0\n解释:比赛中有两支队伍。\ngrid[0][1] == 1 表示 0 队比 1 队强。所以 0 队是冠军。\n\n示例 2:\n\n输入:grid = [[0,0,1],[1,0,1],[0,0,0]]\n输出:1\n解释:比赛中有三支队伍。\ngrid[1][0] == 1 表示 1 队比 0 队强。\ngrid[1][2] == 1 表示 1 队比 2 队强。\n所以 1 队是冠军。\n\n\n提示:\n\n * n == grid.length\n * n == grid[i].length\n * 2 <= n <= 100\n * grid[i][j] 的值为 0 或 1\n * 对于所有 i, grid[i][i] 等于 0.\n * 对于满足 i != j 的所有 i, j ,grid[i][j] != grid[j][i] 均成立\n * 生成的输入满足:如果 a 队比 b 队强,b 队比 c 队强,那么 a 队比 c 队强\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findChampion(self, grid: List[List[int]]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"grid\": [[0,1],[0,0]] }\nassert my_solution.findChampion(**test_input) == 0\n\ntest_input = { \"grid\": [[0,0,1],[1,0,1],[0,0,0]] }\nassert my_solution.findChampion(**test_input) == 1\n\ntest_input = { \"grid\": [[0,0],[1,0]] }\nassert my_solution.findChampion(**test_input) == 1\n\ntest_input = { \"grid\": [[0,0,0],[1,0,0],[1,1,0]] }\nassert my_solution.findChampion(**test_input) == 2\n\ntest_input = { \"grid\": [[0,0,0],[1,0,1],[1,0,0]] }\nassert my_solution.findChampion(**test_input) == 1\n\ntest_input = { \"grid\": [[0,1,0],[0,0,0],[1,1,0]] }\nassert my_solution.findChampion(**test_input) == 2\n\ntest_input = { \"grid\": [[0,1,1],[0,0,0],[0,1,0]] }\nassert my_solution.findChampion(**test_input) == 0\n\ntest_input = { \"grid\": [[0,1,1],[0,0,1],[0,0,0]] }\nassert my_solution.findChampion(**test_input) == 0\n\ntest_input = { \"grid\": [[0,0,0,0],[1,0,0,0],[1,1,0,0],[1,1,1,0]] }\nassert my_solution.findChampion(**test_input) == 3\n\ntest_input = { \"grid\": [[0,0,0,0],[1,0,0,0],[1,1,0,1],[1,1,0,0]] }\nass
|
|||
|
{"task_id": "weekly-contest-370-find-champion-ii", "url": "https://leetcode.com/problems/find-champion-ii", "title": "find-champion-ii", "meta": {"questionId": "3189", "questionFrontendId": "2924", "title": "Find Champion II", "titleSlug": "find-champion-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 92, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。每支队伍也是 有向无环图(DAG) 上的一个节点。\n\n给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图,其中 edges[i] = [ui, vi] 表示图中存在一条从 ui 队到 vi 队的有向边。\n\n从 a 队到 b 队的有向边意味着 a 队比 b 队 强 ,也就是 b 队比 a 队 弱 。\n\n在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。\n\n如果这场比赛存在 唯一 一个冠军,则返回将会成为冠军的队伍。否则,返回 -1 。\n\n注意\n\n * 环 是形如 a1, a2, ..., an, an+1 的一个序列,且满足:节点 a1 与节点 an+1 是同一个节点;节点 a1, a2, ..., an 互不相同;对于范围 [1, n] 中的每个 i ,均存在一条从节点 ai 到节点 ai+1 的有向边。\n * 有向无环图 是不存在任何环的有向图。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/10/19/graph-3.png]\n\n输入:n = 3, edges = [[0,1],[1,2]]\n输出:0\n解释:1 队比 0 队弱。2 队比 1 队弱。所以冠军是 0 队。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/10/19/graph-4.png]\n\n输入:n = 4, edges = [[0,2],[1,3],[1,2]]\n输出:-1\n解释:2 队比 0 队和 1 队弱。3 队比 1 队弱。但是 1 队和 0 队之间不存在强弱对比。所以答案是 -1 。\n\n\n提示:\n\n * 1 <= n <= 100\n * m == edges.length\n * 0 <= m <= n * (n - 1) / 2\n * edges[i].length == 2\n * 0 <= edge[i][j] <= n - 1\n * edges[i][0] != edges[i][1]\n * 生成的输入满足:如果 a 队比 b 队强,就不存在 b 队比 a 队强\n * 生成的输入满足:如果 a 队比 b 队强,b 队比 c 队强,那么 a 队比 c 队强\n\"\"\"\nclass Solution:\n def findChampion(self, n: int, edges: List[List[int]]) -> int:\n ", "prompt_sft": "一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。每支队伍也是 有向无环图(DAG) 上的一个节点。\n\n给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图,其中 edges[i] = [ui, vi] 表示图中存在一条从 ui 队到 vi 队的有向边。\n\n从 a 队到 b 队的有向边意味着 a 队比 b 队 强 ,也就是 b 队比 a 队 弱 。\n\n在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。\n\n如果这场比赛存在 唯一 一个冠军,则返回将会成为冠军的队伍。否则,返回 -1 。\n\n注意\n\n * 环 是形如 a1, a2, ..., an, an+1 的一个序列,且满足:节点 a1 与节点 an+1 是同一个节点;节点 a1, a2, ..., an 互不相同;对于范围 [1, n] 中的每个 i ,均存在一条从节点 ai 到节点 ai+1 的有向边。\n * 有向无环图 是不存在任何环的有向图。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/10/19/graph-3.png]\n\n输入:n = 3, edges = [[0,1],[1,2]]\n输出:0\n解释:1 队比 0 队弱。2 队比 1 队弱。所以冠军是 0 队。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/10/19/graph-4.png]\n\n输入:n = 4, edges = [[0,2],[1,3],[1,2]]\n输出:-1\n解释:2 队比 0 队和 1 队弱。3 队比 1 队弱。但是 1 队和 0 队之间不存在强弱对比。所以答案是 -1 。\n\n\n提示:\n\n * 1 <= n <= 100\n * m == edges.length\n * 0 <= m <= n * (n - 1) / 2\n * edges[i].length == 2\n * 0 <= edge[i][j] <= n - 1\n * edges[i][0] != edges[i][1]\n * 生成的输入满足:如果 a 队比 b 队强,就不存在 b 队比 a 队强\n * 生成的输入满足:如果 a 队比 b 队强,b <20><>
|
|||
|
{"task_id": "weekly-contest-370-maximum-score-after-applying-operations-on-a-tree", "url": "https://leetcode.com/problems/maximum-score-after-applying-operations-on-a-tree", "title": "maximum-score-after-applying-operations-on-a-tree", "meta": {"questionId": "3191", "questionFrontendId": "2925", "title": "Maximum Score After Applying Operations on a Tree", "titleSlug": "maximum-score-after-applying-operations-on-a-tree", "isPaidOnly": false, "difficulty": "Medium", "likes": 243, "dislikes": 45, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n有一棵 n 个节点的无向树,节点编号为 0 到 n - 1 ,根节点编号为 0 。给你一个长度为 n - 1 的二维整数数组 edges 表示这棵树,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边。\n\n同时给你一个长度为 n 下标从 0 开始的整数数组 values ,其中 values[i] 表示第 i 个节点的值。\n\n一开始你的分数为 0 ,每次操作中,你将执行:\n\n * 选择节点 i 。\n * 将 values[i] 加入你的分数。\n * 将 values[i] 变为 0 。\n\n如果从根节点出发,到任意叶子节点经过的路径上的节点值之和都不等于 0 ,那么我们称这棵树是 健康的 。\n\n你可以对这棵树执行任意次操作,但要求执行完所有操作以后树是 健康的 ,请你返回你可以获得的 最大分数 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/10/11/graph-13-1.png]\n\n输入:edges = [[0,1],[0,2],[0,3],[2,4],[4,5]], values = [5,2,5,2,1,1]\n输出:11\n解释:我们可以选择节点 1 ,2 ,3 ,4 和 5 。根节点的值是非 0 的。所以从根出发到任意叶子节点路径上节点值之和都不为 0 。所以树是健康的。你的得分之和为 values[1] + values[2] + values[3] + values[4] + values[5] = 11 。\n11 是你对树执行任意次操作以后可以获得的最大得分之和。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/10/11/graph-14-2.png]\n\n输入:edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]], values = [20,10,9,7,4,3,5]\n输出:40\n解释:我们选择节点 0 ,2 ,3 和 4 。\n- 从 0 到 4 的节点值之和为 10 。\n- 从 0 到 3 的节点值之和为 10 。\n- 从 0 到 5 的节点值之和为 3 。\n- 从 0 到 6 的节点值之和为 5 。\n所以树是健康的。你的得分之和为 values[0] + values[2] + values[3] + values[4] = 40 。\n40 是你对树执行任意次操作以后可以获得的最大得分之和。\n\n\n提示:\n\n * 2 <= n <= 2 * 104\n * edges.length == n - 1\n * edges[i].length == 2\n * 0 <= ai, bi < n\n * values.length == n\n * 1 <= values[i] <= 109\n * 输入保证 edges 构成一棵合法的树。\n\"\"\"\nclass Solution:\n def maximumScoreAfterOperations(self, edges: List[List[int]], values: List[int]) -> int:\n ", "prompt_sft": "有一棵 n 个节点的无向树,节点编号为 0 到 n - 1 ,根节点编号为 0 。给你一个长度为 n - 1 的二维整数数组 edges 表示这棵树,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边。\n\n同时给你一个长度为 n 下标从 0 开始的整数数组 values ,其中 values[i] 表示第 i 个节点的值。\n\n一开始你的分数为 0 ,每次操作中,你将执行:\n\n * 选择节点 i 。\n * 将 values[i] 加入你的分数。\n * 将 values[i] 变为 0 。\n\n如果从根节点出发,到任意叶子节点经过的路径上的节点值之和都不等于 0 ,那么我们称这棵树是 健康的 。\n\n你可以对这棵树执行任意次操作,但要求执行完所有操作以后树是 健康的 ,请你返回你可以获得的 最大分数 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/10/11/graph-13-1.png]\n\n输入:edges = [[0,1],[0,2],[0,3],[2,4],[4,5]], values = [5,2,5,2,1,1]\n输出:11\n解释:我们可以选择节点 1 ,2 ,3 ,4 和 5 。根节点的值是非 0 的。所以从根出发到任意叶子节点路径上节点值之和都不为 0 。所以树<E4BBA5><E6A091>
|
|||
|
{"task_id": "weekly-contest-370-maximum-balanced-subsequence-sum", "url": "https://leetcode.com/problems/maximum-balanced-subsequence-sum", "title": "maximum-balanced-subsequence-sum", "meta": {"questionId": "3184", "questionFrontendId": "2926", "title": "Maximum Balanced Subsequence Sum", "titleSlug": "maximum-balanced-subsequence-sum", "isPaidOnly": false, "difficulty": "Hard", "likes": 133, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\nnums 一个长度为 k 的 子序列 指的是选出 k 个 下标 i0 < i1 < ... < ik-1 ,如果这个子序列满足以下条件,我们说它是 平衡的 :\n\n * 对于范围 [1, k - 1] 内的所有 j ,nums[ij] - nums[ij-1] >= ij - ij-1 都成立。\n\nnums 长度为 1 的 子序列 是平衡的。\n\n请你返回一个整数,表示 nums 平衡 子序列里面的 最大元素和 。\n\n一个数组的 子序列 指的是从原数组中删除一些元素(也可能一个元素也不删除)后,剩余元素保持相对顺序得到的 非空 新数组。\n\n示例 1:\n\n输入:nums = [3,3,5,6]\n输出:14\n解释:这个例子中,选择子序列 [3,5,6] ,下标为 0 ,2 和 3 的元素被选中。\nnums[2] - nums[0] >= 2 - 0 。\nnums[3] - nums[2] >= 3 - 2 。\n所以,这是一个平衡子序列,且它的和是所有平衡子序列里最大的。\n包含下标 1 ,2 和 3 的子序列也是一个平衡的子序列。\n最大平衡子序列和为 14 。\n\n示例 2:\n\n输入:nums = [5,-1,-3,8]\n输出:13\n解释:这个例子中,选择子序列 [5,8] ,下标为 0 和 3 的元素被选中。\nnums[3] - nums[0] >= 3 - 0 。\n所以,这是一个平衡子序列,且它的和是所有平衡子序列里最大的。\n最大平衡子序列和为 13 。\n\n示例 3:\n\n输入:nums = [-2,-1]\n输出:-1\n解释:这个例子中,选择子序列 [-1] 。\n这是一个平衡子序列,而且它的和是 nums 所有平衡子序列里最大的。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * -109 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def maxBalancedSubsequenceSum(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\nnums 一个长度为 k 的 子序列 指的是选出 k 个 下标 i0 < i1 < ... < ik-1 ,如果这个子序列满足以下条件,我们说它是 平衡的 :\n\n * 对于范围 [1, k - 1] 内的所有 j ,nums[ij] - nums[ij-1] >= ij - ij-1 都成立。\n\nnums 长度为 1 的 子序列 是平衡的。\n\n请你返回一个整数,表示 nums 平衡 子序列里面的 最大元素和 。\n\n一个数组的 子序列 指的是从原数组中删除一些元素(也可能一个元素也不删除)后,剩余元素保持相对顺序得到的 非空 新数组。\n\n示例 1:\n\n输入:nums = [3,3,5,6]\n输出:14\n解释:这个例子中,选择子序列 [3,5,6] ,下标为 0 ,2 和 3 的元素被选中。\nnums[2] - nums[0] >= 2 - 0 。\nnums[3] - nums[2] >= 3 - 2 。\n所以,这是一个平衡子序列,且它的和是所有平衡子序列里最大的。\n包含下标 1 ,2 和 3 的子序列也是一个平衡的子序列。\n最大平衡子序列和为 14 。\n\n示例 2:\n\n输入:nums = [5,-1,-3,8]\n输出:13\n解释:这个例子中,选择子序列 [5,8] ,下标为 0 和 3 的元素被选中。\nnums[3] - nums[0] >= 3 - 0 。\n所以,这是一个平衡子序列,且它的和是所有平衡子序列里最大的。\n最大平衡子序列和为 13 。\n\n示例 3:\n\n输入:nums = [-2,-1]\n输出:-1\n解释:这个例子中,选择子序列 [-1] 。\n这是一个平衡子序列,而且它的和是 nums 所有平衡子序列里最大的。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * -109 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxBalancedSubsequenceSum(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = So
|
|||
|
{"task_id": "weekly-contest-369-find-the-k-or-of-an-array", "url": "https://leetcode.com/problems/find-the-k-or-of-an-array", "title": "find-the-k-or-of-an-array", "meta": {"questionId": "3183", "questionFrontendId": "2917", "title": "Find the K-or of an Array", "titleSlug": "find-the-k-or-of-an-array", "isPaidOnly": false, "difficulty": "Easy", "likes": 55, "dislikes": 201, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\nnums 中的 K-or 是一个满足以下条件的非负整数:\n\n * 只有在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值才是 1 。\n\n返回 nums 的 K-or 值。\n\n注意 :对于整数 x ,如果 (2i AND x) == 2i ,则 x 中的第 i 位值为 1 ,其中 AND 为按位与运算符。\n\n示例 1:\n\n输入:nums = [7,12,9,8,9,15], k = 4\n输出:9\n解释:nums[0]、nums[2]、nums[4] 和 nums[5] 的第 0 位的值为 1 。\nnums[0] 和 nums[5] 的第 1 位的值为 1 。\nnums[0]、nums[1] 和 nums[5] 的第 2 位的值为 1 。\nnums[1]、nums[2]、nums[3]、nums[4] 和 nums[5] 的第 3 位的值为 1 。\n只有第 0 位和第 3 位满足数组中至少存在 k 个元素在对应位上的值为 1 。因此,答案为 2^0 + 2^3 = 9 。\n\n示例 2:\n\n输入:nums = [2,12,1,11,4,5], k = 6\n输出:0\n解释:因为 k == 6 == nums.length ,所以数组的 6-or 等于其中所有元素按位与运算的结果。因此,答案为 2 AND 12 AND 1 AND 11 AND 4 AND 5 = 0 。\n\n示例 3:\n\n输入:nums = [10,8,5,9,11,6,8], k = 1\n输出:15\n解释:因为 k == 1 ,数组的 1-or 等于其中所有元素按位或运算的结果。因此,答案为 10 OR 8 OR 5 OR 9 OR 11 OR 6 OR 8 = 15 。\n\n提示:\n\n * 1 <= nums.length <= 50\n * 0 <= nums[i] < 231\n * 1 <= k <= nums.length\n\"\"\"\nclass Solution:\n def findKOr(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\nnums 中的 K-or 是一个满足以下条件的非负整数:\n\n * 只有在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值才是 1 。\n\n返回 nums 的 K-or 值。\n\n注意 :对于整数 x ,如果 (2i AND x) == 2i ,则 x 中的第 i 位值为 1 ,其中 AND 为按位与运算符。\n\n示例 1:\n\n输入:nums = [7,12,9,8,9,15], k = 4\n输出:9\n解释:nums[0]、nums[2]、nums[4] 和 nums[5] 的第 0 位的值为 1 。\nnums[0] 和 nums[5] 的第 1 位的值为 1 。\nnums[0]、nums[1] 和 nums[5] 的第 2 位的值为 1 。\nnums[1]、nums[2]、nums[3]、nums[4] 和 nums[5] 的第 3 位的值为 1 。\n只有第 0 位和第 3 位满足数组中至少存在 k 个元素在对应位上的值为 1 。因此,答案为 2^0 + 2^3 = 9 。\n\n示例 2:\n\n输入:nums = [2,12,1,11,4,5], k = 6\n输出:0\n解释:因为 k == 6 == nums.length ,所以数组的 6-or 等于其中所有元素按位与运算的结果。因此,答案为 2 AND 12 AND 1 AND 11 AND 4 AND 5 = 0 。\n\n示例 3:\n\n输入:nums = [10,8,5,9,11,6,8], k = 1\n输出:15\n解释:因为 k == 1 ,数组的 1-or 等于其中所有元素按位或运算的结果。因此,答案为 10 OR 8 OR 5 OR 9 OR 11 OR 6 OR 8 = 15 。\n\n提示:\n\n * 1 <= nums.length <= 50\n * 0 <= nums[i] < 231\n * 1 <= k <= nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findKOr(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [7,12,9,8,9,15], \"k\": 4 }\nassert my_solution.findKOr(**test_input) == 9\n\ntest_input = { \"nums\": [2,12,1,11,4,5], \"k\": 6 }\nassert my_solution.findKOr(**test_input) == 0\n\ntest_input = { \"nums\": [10,8,5,9,11,6,8], \"k\": 1 }\nassert my_solution.findKOr(**test_input) == 15\n\ntest_input = { \"nums\": [14,7,12,9,8,9,1,15], \"k\": 4 }\nassert my_solution.findKOr(**test_input) == 13\n\ntest_input = { \"nums\": [2,12,1,11,4,5], \"k\"
|
|||
|
{"task_id": "weekly-contest-369-minimum-equal-sum-of-two-arrays-after-replacing-zeros", "url": "https://leetcode.com/problems/minimum-equal-sum-of-two-arrays-after-replacing-zeros", "title": "minimum-equal-sum-of-two-arrays-after-replacing-zeros", "meta": {"questionId": "3171", "questionFrontendId": "2918", "title": "Minimum Equal Sum of Two Arrays After Replacing Zeros", "titleSlug": "minimum-equal-sum-of-two-arrays-after-replacing-zeros", "isPaidOnly": false, "difficulty": "Medium", "likes": 131, "dislikes": 15, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个由正整数和 0 组成的数组 nums1 和 nums2 。\n\n你必须将两个数组中的 所有 0 替换为 严格 正整数,并且满足两个数组中所有元素的和 相等 。\n\n返回 最小 相等和 ,如果无法使两数组相等,则返回 -1 。\n\n示例 1:\n\n输入:nums1 = [3,2,0,1,0], nums2 = [6,5,0]\n输出:12\n解释:可以按下述方式替换数组中的 0 :\n- 用 2 和 4 替换 nums1 中的两个 0 。得到 nums1 = [3,2,2,1,4] 。\n- 用 1 替换 nums2 中的一个 0 。得到 nums2 = [6,5,1] 。\n两个数组的元素和相等,都等于 12 。可以证明这是可以获得的最小相等和。\n\n示例 2:\n\n输入:nums1 = [2,0,2,0], nums2 = [1,4]\n输出:-1\n解释:无法使两个数组的和相等。\n\n\n提示:\n\n * 1 <= nums1.length, nums2.length <= 105\n * 0 <= nums1[i], nums2[i] <= 106\n\"\"\"\nclass Solution:\n def minSum(self, nums1: List[int], nums2: List[int]) -> int:\n ", "prompt_sft": "给你两个由正整数和 0 组成的数组 nums1 和 nums2 。\n\n你必须将两个数组中的 所有 0 替换为 严格 正整数,并且满足两个数组中所有元素的和 相等 。\n\n返回 最小 相等和 ,如果无法使两数组相等,则返回 -1 。\n\n示例 1:\n\n输入:nums1 = [3,2,0,1,0], nums2 = [6,5,0]\n输出:12\n解释:可以按下述方式替换数组中的 0 :\n- 用 2 和 4 替换 nums1 中的两个 0 。得到 nums1 = [3,2,2,1,4] 。\n- 用 1 替换 nums2 中的一个 0 。得到 nums2 = [6,5,1] 。\n两个数组的元素和相等,都等于 12 。可以证明这是可以获得的最小相等和。\n\n示例 2:\n\n输入:nums1 = [2,0,2,0], nums2 = [1,4]\n输出:-1\n解释:无法使两个数组的和相等。\n\n\n提示:\n\n * 1 <= nums1.length, nums2.length <= 105\n * 0 <= nums1[i], nums2[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minSum(self, nums1: List[int], nums2: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums1\": [3,2,0,1,0], \"nums2\": [6,5,0] }\nassert my_solution.minSum(**test_input) == 12\n\ntest_input = { \"nums1\": [2,0,2,0], \"nums2\": [1,4] }\nassert my_solution.minSum(**test_input) == -1\n\ntest_input = { \"nums1\": [0,7,28,17,18], \"nums2\": [1,2,6,26,1,0,27,3,0,30] }\nassert my_solution.minSum(**test_input) == 98\n\ntest_input = { \"nums1\": [8,13,15,18,0,18,0,0,5,20,12,27,3,14,22,0], \"nums2\": [29,1,6,0,10,24,27,17,14,13,2,19,2,11] }\nassert my_solution.minSum(**test_input) == 179\n\ntest_input = { \"nums1\": [9,5], \"nums2\": [15,12,5,21,4,26,27,9,6,29,0,18,16,0,0,0,20] }\nassert my_solution.minSum(**test_input) == -1\n\ntest_input = { \"nums1\": [0,29,5,22,5,9,30,11,20,0,18,16,26,11,3,0,24,24,14,24], \"nums2\": [30,12,16,3,24,6,13,0,16] }\nassert my_solution.minSum(**test_input) == 294\n\ntest_input = { \"nums1\": [9,13,0,0,12,10,0,8,0,0,5,13,0], \"nums2\": [8,14,11,2,27,0,0] }\nassert my_solution.minSum(**test_input) == 76\n\ntest_input = { \"nums1\": [3,0,20,9,20,0,20,25,26,9,0,12,6,11,0,6], \"nums2\": [0,3,8,13,27,0,0,0,29,27,0,11,23,0,19,19,0] }\nassert my_solution.minSum(**test_input) == 186\n\ntest_input = { \"nums1\": [25,28,13,0,14,23,14,0,3,3,12], \"nums2\": [24,30,0,15,20,19,18,0,23,23,0,16,26,0,29,19,16,25] }\nassert my_solution.minSum(**test_input) == 307\n\ntest_input = { \"nums1\": [0,29,30,18,5,24,16,5,17,0,18,16,26,0,15,19,14,20,3,26], \"nums2\": [0,8,14,11,13,6,8,0,13] }\nassert my_solution.min
|
|||
|
{"task_id": "weekly-contest-369-minimum-increment-operations-to-make-array-beautiful", "url": "https://leetcode.com/problems/minimum-increment-operations-to-make-array-beautiful", "title": "minimum-increment-operations-to-make-array-beautiful", "meta": {"questionId": "3178", "questionFrontendId": "2919", "title": "Minimum Increment Operations to Make Array Beautiful", "titleSlug": "minimum-increment-operations-to-make-array-beautiful", "isPaidOnly": false, "difficulty": "Medium", "likes": 254, "dislikes": 15, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和一个整数 k 。\n\n你可以执行下述 递增 运算 任意 次(可以是 0 次):\n\n * 从范围 [0, n - 1] 中选择一个下标 i ,并将 nums[i] 的值加 1 。\n\n如果数组中任何长度 大于或等于 3 的子数组,其 最大 元素都大于或等于 k ,则认为数组是一个 美丽数组 。\n\n以整数形式返回使数组变为 美丽数组 需要执行的 最小 递增运算数。\n\n子数组是数组中的一个连续 非空 元素序列。\n\n示例 1:\n\n输入:nums = [2,3,0,0,2], k = 4\n输出:3\n解释:可以执行下述递增运算,使 nums 变为美丽数组:\n选择下标 i = 1 ,并且将 nums[1] 的值加 1 -> [2,4,0,0,2] 。\n选择下标 i = 4 ,并且将 nums[4] 的值加 1 -> [2,4,0,0,3] 。\n选择下标 i = 4 ,并且将 nums[4] 的值加 1 -> [2,4,0,0,4] 。\n长度大于或等于 3 的子数组为 [2,4,0], [4,0,0], [0,0,4], [2,4,0,0], [4,0,0,4], [2,4,0,0,4] 。\n在所有子数组中,最大元素都等于 k = 4 ,所以 nums 现在是美丽数组。\n可以证明无法用少于 3 次递增运算使 nums 变为美丽数组。\n因此,答案为 3 。\n\n示例 2:\n\n输入:nums = [0,1,3,3], k = 5\n输出:2\n解释:可以执行下述递增运算,使 nums 变为美丽数组:\n选择下标 i = 2 ,并且将 nums[2] 的值加 1 -> [0,1,4,3] 。\n选择下标 i = 2 ,并且将 nums[2] 的值加 1 -> [0,1,5,3] 。\n长度大于或等于 3 的子数组为 [0,1,5]、[1,5,3]、[0,1,5,3] 。\n在所有子数组中,最大元素都等于 k = 5 ,所以 nums 现在是美丽数组。\n可以证明无法用少于 2 次递增运算使 nums 变为美丽数组。\n因此,答案为 2 。\n\n示例 3:\n\n输入:nums = [1,1,2], k = 1\n输出:0\n解释:在这个示例中,只有一个长度大于或等于 3 的子数组 [1,1,2] 。\n其最大元素 2 已经大于 k = 1 ,所以无需执行任何增量运算。\n因此,答案为 0 。\n\n\n提示:\n\n * 3 <= n == nums.length <= 105\n * 0 <= nums[i] <= 109\n * 0 <= k <= 109\n\"\"\"\nclass Solution:\n def minIncrementOperations(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和一个整数 k 。\n\n你可以执行下述 递增 运算 任意 次(可以是 0 次):\n\n * 从范围 [0, n - 1] 中选择一个下标 i ,并将 nums[i] 的值加 1 。\n\n如果数组中任何长度 大于或等于 3 的子数组,其 最大 元素都大于或等于 k ,则认为数组是一个 美丽数组 。\n\n以整数形式返回使数组变为 美丽数组 需要执行的 最小 递增运算数。\n\n子数组是数组中的一个连续 非空 元素序列。\n\n示例 1:\n\n输入:nums = [2,3,0,0,2], k = 4\n输出:3\n解释:可以执行下述递增运算,使 nums 变为美丽数组:\n选择下标 i = 1 ,并且将 nums[1] 的值加 1 -> [2,4,0,0,2] 。\n选择下标 i = 4 ,并且将 nums[4] 的值加 1 -> [2,4,0,0,3] 。\n选择下标 i = 4 ,并且将 nums[4] 的值加 1 -> [2,4,0,0,4] 。\n长度大于或等于 3 的子数组为 [2,4,0], [4,0,0], [0,0,4], [2,4,0,0], [4,0,0,4], [2,4,0,0,4] 。\n在所有子数组中,最大元素都等于 k = 4 ,所以 nums 现在是美丽数组。\n可以证明无法用少于 3 次递增运算使 nums 变为美丽数组。\n因此,答案为 3 。\n\n示例 2:\n\n输入:nums = [0,1,3,3], k = 5\n输出:2\n解释:可以<E58FAF>
|
|||
|
{"task_id": "weekly-contest-369-maximum-points-after-collecting-coins-from-all-nodes", "url": "https://leetcode.com/problems/maximum-points-after-collecting-coins-from-all-nodes", "title": "maximum-points-after-collecting-coins-from-all-nodes", "meta": {"questionId": "3179", "questionFrontendId": "2920", "title": "Maximum Points After Collecting Coins From All Nodes", "titleSlug": "maximum-points-after-collecting-coins-from-all-nodes", "isPaidOnly": false, "difficulty": "Hard", "likes": 161, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n有一棵由 n 个节点组成的无向树,以 0 为根节点,节点编号从 0 到 n - 1 。给你一个长度为 n - 1 的二维 整数 数组 edges ,其中 edges[i] = [ai, bi] 表示在树上的节点 ai 和 bi 之间存在一条边。另给你一个下标从 0 开始、长度为 n 的数组 coins 和一个整数 k ,其中 coins[i] 表示节点 i 处的金币数量。\n\n从根节点开始,你必须收集所有金币。要想收集节点上的金币,必须先收集该节点的祖先节点上的金币。\n\n节点 i 上的金币可以用下述方法之一进行收集:\n\n * 收集所有金币,得到共计 coins[i] - k 点积分。如果 coins[i] - k 是负数,你将会失去 abs(coins[i] - k) 点积分。\n * 收集所有金币,得到共计 floor(coins[i] / 2) 点积分。如果采用这种方法,节点 i 子树中所有节点 j 的金币数 coins[j] 将会减少至 floor(coins[j] / 2) 。\n\n返回收集 所有 树节点的金币之后可以获得的最大积分。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/09/18/ex1-copy.png]\n\n输入:edges = [[0,1],[1,2],[2,3]], coins = [10,10,3,3], k = 5\n输出:11\n解释:\n使用第一种方法收集节点 0 上的所有金币。总积分 = 10 - 5 = 5 。\n使用第一种方法收集节点 1 上的所有金币。总积分 = 5 + (10 - 5) = 10 。\n使用第二种方法收集节点 2 上的所有金币。所以节点 3 上的金币将会变为 floor(3 / 2) = 1 ,总积分 = 10 + floor(3 / 2) = 11 。\n使用第二种方法收集节点 3 上的所有金币。总积分 = 11 + floor(1 / 2) = 11.\n可以证明收集所有节点上的金币能获得的最大积分是 11 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/09/18/ex2.png]\n\n输入:edges = [[0,1],[0,2]], coins = [8,4,4], k = 0\n输出:16\n解释:\n使用第一种方法收集所有节点上的金币,因此,总积分 = (8 - 0) + (4 - 0) + (4 - 0) = 16 。\n\n\n提示:\n\n * n == coins.length\n * 2 <= n <= 105\n * 0 <= coins[i] <= 104\n * edges.length == n - 1\n * 0 <= edges[i][0], edges[i][1] < n\n * 0 <= k <= 104\n\"\"\"\nclass Solution:\n def maximumPoints(self, edges: List[List[int]], coins: List[int], k: int) -> int:\n ", "prompt_sft": "有一棵由 n 个节点组成的无向树,以 0 为根节点,节点编号从 0 到 n - 1 。给你一个长度为 n - 1 的二维 整数 数组 edges ,其中 edges[i] = [ai, bi] 表示在树上的节点 ai 和 bi 之间存在一条边。另给你一个下标从 0 开始、长度为 n 的数组 coins 和一个整数 k ,其中 coins[i] 表示节点 i 处的金币数量。\n\n从根节点开始,你必须收集所有金币。要想收集节点上的金币,必须先收集该节点的祖先节点上的金币。\n\n节点 i 上的金币可以用下述方法之一进行收集:\n\n * 收集所有金币,得到共计 coins[i] - k 点积分。如果 coins[i] - k 是负数,你将会失去 abs(coins[i] - k) 点积分。\n * 收集所有金币,得到共计 floor(coins[i] / 2) 点积分。如果采用这种方法,节点 i 子树中所有节点 j 的金币数 coins[j] 将会减少至 floor(coins[j] / 2) 。\n\n返回收集 所有 树节点的金币之后可以获得的最大积分。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/09/18/ex1-copy.png]\n\n输入:edges = [[0,1],[1,2],[2,3]], coins = [10,10,3,3], k = 5\n输出:11\n解释:\n使用第一种方法收集节点 0 上的所有金币。总积分 = 10 - 5 = 5 。\n使<6E><E4BDBF>
|
|||
|
{"task_id": "biweekly-contest-116-subarrays-distinct-element-sum-of-squares-i", "url": "https://leetcode.com/problems/subarrays-distinct-element-sum-of-squares-i", "title": "subarrays-distinct-element-sum-of-squares-i", "meta": {"questionId": "3163", "questionFrontendId": "2913", "title": "Subarrays Distinct Element Sum of Squares I", "titleSlug": "subarrays-distinct-element-sum-of-squares-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 82, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n定义 nums 一个子数组的 不同计数 值如下:\n\n * 令 nums[i..j] 表示 nums 中所有下标在 i 到 j 范围内的元素构成的子数组(满足 0 <= i <= j < nums.length ),那么我们称子数组 nums[i..j] 中不同值的数目为 nums[i..j] 的不同计数。\n\n请你返回 nums 中所有子数组的 不同计数 的 平方 和。\n\n由于答案可能会很大,请你将它对 109 + 7 取余 后返回。\n\n子数组指的是一个数组里面一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,1]\n输出:15\n解释:六个子数组分别为:\n[1]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[1]: 1 个互不相同的元素。\n[1,2]: 2 个互不相同的元素。\n[2,1]: 2 个互不相同的元素。\n[1,2,1]: 2 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 + 22 + 22 + 22 = 15 。\n\n示例 2:\n\n输入:nums = [2,2]\n输出:3\n解释:三个子数组分别为:\n[2]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[2,2]: 1 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 = 3 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n\"\"\"\nclass Solution:\n def sumCounts(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n定义 nums 一个子数组的 不同计数 值如下:\n\n * 令 nums[i..j] 表示 nums 中所有下标在 i 到 j 范围内的元素构成的子数组(满足 0 <= i <= j < nums.length ),那么我们称子数组 nums[i..j] 中不同值的数目为 nums[i..j] 的不同计数。\n\n请你返回 nums 中所有子数组的 不同计数 的 平方 和。\n\n由于答案可能会很大,请你将它对 109 + 7 取余 后返回。\n\n子数组指的是一个数组里面一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,1]\n输出:15\n解释:六个子数组分别为:\n[1]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[1]: 1 个互不相同的元素。\n[1,2]: 2 个互不相同的元素。\n[2,1]: 2 个互不相同的元素。\n[1,2,1]: 2 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 + 22 + 22 + 22 = 15 。\n\n示例 2:\n\n输入:nums = [2,2]\n输出:3\n解释:三个子数组分别为:\n[2]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[2,2]: 1 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 = 3 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sumCounts(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,1] }\nassert my_solution.sumCounts(**test_input) == 15\n\ntest_input = { \"nums\": [1,1] }\nassert my_solution.sumCounts(**test_input) == 3\n\ntest_input = { \"nums\": [2,2,5,5] }\nassert my_solution.sumCounts(**test_input) == 22\n\ntest_input = { \"nums\": [5,2,4,2,1,3,2,4,3,1] }\nassert my_solution.sumCounts(**test_input) == 578\n\ntest_input = { \"nums\": [2,3,2,1,2,5,3,4,5,2] }\nassert my_solution.sumCounts(**test_input) == 629\n\ntest_input = { \"nums\": [5,1,5,2,3,5,1,5,1] }\nassert my_solution.sumCounts(**test_input) == 385\n\ntest_input = { \"nums\": [4,5,4,3,4,2] }\nassert my_solution.sumCounts(**test_input) == 120\n\ntest_input =
|
|||
|
{"task_id": "biweekly-contest-116-minimum-number-of-changes-to-make-binary-string-beautiful", "url": "https://leetcode.com/problems/minimum-number-of-changes-to-make-binary-string-beautiful", "title": "minimum-number-of-changes-to-make-binary-string-beautiful", "meta": {"questionId": "3174", "questionFrontendId": "2914", "title": "Minimum Number of Changes to Make Binary String Beautiful", "titleSlug": "minimum-number-of-changes-to-make-binary-string-beautiful", "isPaidOnly": false, "difficulty": "Medium", "likes": 111, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为偶数下标从 0 开始的二进制字符串 s 。\n\n如果可以将一个字符串分割成一个或者更多满足以下条件的子字符串,那么我们称这个字符串是 美丽的 :\n\n * 每个子字符串的长度都是 偶数 。\n * 每个子字符串都 只 包含 1 或 只 包含 0 。\n\n你可以将 s 中任一字符改成 0 或者 1 。\n\n请你返回让字符串 s 美丽的 最少 字符修改次数。\n\n示例 1:\n\n输入:s = \"1001\"\n输出:2\n解释:我们将 s[1] 改为 1 ,且将 s[3] 改为 0 ,得到字符串 \"1100\" 。\n字符串 \"1100\" 是美丽的,因为我们可以将它分割成 \"11|00\" 。\n将字符串变美丽最少需要 2 次修改。\n\n示例 2:\n\n输入:s = \"10\"\n输出:1\n解释:我们将 s[1] 改为 1 ,得到字符串 \"11\" 。\n字符串 \"11\" 是美丽的,因为它已经是美丽的。\n将字符串变美丽最少需要 1 次修改。\n\n示例 3:\n\n输入:s = \"0000\"\n输出:0\n解释:不需要进行任何修改,字符串 \"0000\" 已经是美丽字符串。\n\n\n提示:\n\n * 2 <= s.length <= 105\n * s 的长度为偶数。\n * s[i] 要么是 '0' ,要么是 '1' 。\n\"\"\"\nclass Solution:\n def minChanges(self, s: str) -> int:\n ", "prompt_sft": "给你一个长度为偶数下标从 0 开始的二进制字符串 s 。\n\n如果可以将一个字符串分割成一个或者更多满足以下条件的子字符串,那么我们称这个字符串是 美丽的 :\n\n * 每个子字符串的长度都是 偶数 。\n * 每个子字符串都 只 包含 1 或 只 包含 0 。\n\n你可以将 s 中任一字符改成 0 或者 1 。\n\n请你返回让字符串 s 美丽的 最少 字符修改次数。\n\n示例 1:\n\n输入:s = \"1001\"\n输出:2\n解释:我们将 s[1] 改为 1 ,且将 s[3] 改为 0 ,得到字符串 \"1100\" 。\n字符串 \"1100\" 是美丽的,因为我们可以将它分割成 \"11|00\" 。\n将字符串变美丽最少需要 2 次修改。\n\n示例 2:\n\n输入:s = \"10\"\n输出:1\n解释:我们将 s[1] 改为 1 ,得到字符串 \"11\" 。\n字符串 \"11\" 是美丽的,因为它已经是美丽的。\n将字符串变美丽最少需要 1 次修改。\n\n示例 3:\n\n输入:s = \"0000\"\n输出:0\n解释:不需要进行任何修改,字符串 \"0000\" 已经是美丽字符串。\n\n\n提示:\n\n * 2 <= s.length <= 105\n * s 的长度为偶数。\n * s[i] 要么是 '0' ,要么是 '1' 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minChanges(self, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"1001\" }\nassert my_solution.minChanges(**test_input) == 2\n\ntest_input = { \"s\": \"10\" }\nassert my_solution.minChanges(**test_input) == 1\n\ntest_input = { \"s\": \"0000\" }\nassert my_solution.minChanges(**test_input) == 0\n\ntest_input = { \"s\": \"11000111\" }\nassert my_solution.minChanges(**test_input) == 1\n\ntest_input = { \"s\": \"01010001\" }\nassert my_solution.minChanges(**test_input) == 3\n\ntest_input = { \"s\": \"010010\" }\nassert my_solution.minChanges(**test_input) == 2\n\ntest_input = { \"s\": \"111111111110010001\" }\nassert my_solution.minChanges(**test_input) == 3\n\ntest_input = { \"s\": \"01010000011001001101\" }\nassert my_solution.minChanges(**test_input) == 6\n\ntest_input = { \"s\": \"011011100001110111\"
|
|||
|
{"task_id": "biweekly-contest-116-length-of-the-longest-subsequence-that-sums-to-target", "url": "https://leetcode.com/problems/length-of-the-longest-subsequence-that-sums-to-target", "title": "length-of-the-longest-subsequence-that-sums-to-target", "meta": {"questionId": "3106", "questionFrontendId": "2915", "title": "Length of the Longest Subsequence That Sums to Target", "titleSlug": "length-of-the-longest-subsequence-that-sums-to-target", "isPaidOnly": false, "difficulty": "Medium", "likes": 141, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。\n\n返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。\n\n子序列 指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来的顺序构成的数组。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5], target = 9\n输出:3\n解释:总共有 3 个子序列的和为 9 :[4,5] ,[1,3,5] 和 [2,3,4] 。最长的子序列是 [1,3,5] 和 [2,3,4] 。所以答案为 3 。\n\n示例 2:\n\n输入:nums = [4,1,3,2,1,5], target = 7\n输出:4\n解释:总共有 5 个子序列的和为 7 :[4,3] ,[4,1,2] ,[4,2,1] ,[1,1,5] 和 [1,3,2,1] 。最长子序列为 [1,3,2,1] 。所以答案为 4 。\n\n示例 3:\n\n输入:nums = [1,1,5,4,5], target = 3\n输出:-1\n解释:无法得到和为 3 的子序列。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 1000\n * 1 <= target <= 1000\n\"\"\"\nclass Solution:\n def lengthOfLongestSubsequence(self, nums: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。\n\n返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。\n\n子序列 指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来的顺序构成的数组。\n\n示例 1:\n\n输入:nums = [1,2,3,4,5], target = 9\n输出:3\n解释:总共有 3 个子序列的和为 9 :[4,5] ,[1,3,5] 和 [2,3,4] 。最长的子序列是 [1,3,5] 和 [2,3,4] 。所以答案为 3 。\n\n示例 2:\n\n输入:nums = [4,1,3,2,1,5], target = 7\n输出:4\n解释:总共有 5 个子序列的和为 7 :[4,3] ,[4,1,2] ,[4,2,1] ,[1,1,5] 和 [1,3,2,1] 。最长子序列为 [1,3,2,1] 。所以答案为 4 。\n\n示例 3:\n\n输入:nums = [1,1,5,4,5], target = 3\n输出:-1\n解释:无法得到和为 3 的子序列。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 1000\n * 1 <= target <= 1000\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def lengthOfLongestSubsequence(self, nums: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4,5], \"target\": 9 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == 3\n\ntest_input = { \"nums\": [4,1,3,2,1,5], \"target\": 7 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == 4\n\ntest_input = { \"nums\": [1,1,5,4,5], \"target\": 3 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == -1\n\ntest_input = { \"nums\": [1000], \"target\": 12 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == -1\n\ntest_input = { \"nums\": [1000], \"target\": 1000 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == 1\n\ntest_input = { \"nums\": [1,2], \"target\": 10 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == -1\n\ntest_input = { \"nums\": [1,1000], \"target\": 5 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == -1\n\ntest_input = { \"nums\": [2,3], \"target\": 3 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == 1\n\ntest_input = { \"nums\": [2,3], \"target\": 5 }\nassert my_solution.lengthOfLongestSubsequence(**test_input) == 2\n\ntest_input = { \"nums\": [2,3,5], \"target\
|
|||
|
{"task_id": "biweekly-contest-116-subarrays-distinct-element-sum-of-squares-ii", "url": "https://leetcode.com/problems/subarrays-distinct-element-sum-of-squares-ii", "title": "subarrays-distinct-element-sum-of-squares-ii", "meta": {"questionId": "3139", "questionFrontendId": "2916", "title": "Subarrays Distinct Element Sum of Squares II", "titleSlug": "subarrays-distinct-element-sum-of-squares-ii", "isPaidOnly": false, "difficulty": "Hard", "likes": 115, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n定义 nums 一个子数组的 不同计数 值如下:\n\n * 令 nums[i..j] 表示 nums 中所有下标在 i 到 j 范围内的元素构成的子数组(满足 0 <= i <= j < nums.length ),那么我们称子数组 nums[i..j] 中不同值的数目为 nums[i..j] 的不同计数。\n\n请你返回 nums 中所有子数组的 不同计数 的 平方 和。\n\n由于答案可能会很大,请你将它对 109 + 7 取余 后返回。\n\n子数组指的是一个数组里面一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,1]\n输出:15\n解释:六个子数组分别为:\n[1]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[1]: 1 个互不相同的元素。\n[1,2]: 2 个互不相同的元素。\n[2,1]: 2 个互不相同的元素。\n[1,2,1]: 2 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 + 22 + 22 + 22 = 15 。\n\n示例 2:\n\n输入:nums = [2,2]\n输出:3\n解释:三个子数组分别为:\n[2]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[2,2]: 1 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 = 3 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 105\n\"\"\"\nclass Solution:\n def sumCounts(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n定义 nums 一个子数组的 不同计数 值如下:\n\n * 令 nums[i..j] 表示 nums 中所有下标在 i 到 j 范围内的元素构成的子数组(满足 0 <= i <= j < nums.length ),那么我们称子数组 nums[i..j] 中不同值的数目为 nums[i..j] 的不同计数。\n\n请你返回 nums 中所有子数组的 不同计数 的 平方 和。\n\n由于答案可能会很大,请你将它对 109 + 7 取余 后返回。\n\n子数组指的是一个数组里面一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [1,2,1]\n输出:15\n解释:六个子数组分别为:\n[1]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[1]: 1 个互不相同的元素。\n[1,2]: 2 个互不相同的元素。\n[2,1]: 2 个互不相同的元素。\n[1,2,1]: 2 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 + 22 + 22 + 22 = 15 。\n\n示例 2:\n\n输入:nums = [2,2]\n输出:3\n解释:三个子数组分别为:\n[2]: 1 个互不相同的元素。\n[2]: 1 个互不相同的元素。\n[2,2]: 1 个互不相同的元素。\n所有不同计数的平方和为 12 + 12 + 12 = 3 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sumCounts(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,1] }\nassert my_solution.sumCounts(**test_input) == 15\n\ntest_input = { \"nums\": [2,2] }\nassert my_solution.sumCounts(**test_input) == 3\n\ntest_input = { \"nums\": [2,2,5,5] }\nassert my_solution.sumCounts(**test_input) == 22\n\ntest_input = { \"nums\": [5,2,4,2,1,3,2,4,3,1] }\nassert my_solution.sumCounts(**test_input) == 578\n\ntest_input = { \"nums\": [2,3,2,1,2,5,3,4,5,2] }\nassert my_solution.sumCounts(**test_input) == 629\n\ntest_input = { \"nums\": [5,1,5,2,3,5,1,5,1] }\nassert my_solution.sumCounts(**test_input) == 385\n\ntest_input = { \"nums\": [4,5,4,3,4,2] }\nassert my_solution.sumCounts(**test_input) == 120\n\ntest_in
|
|||
|
{"task_id": "weekly-contest-368-minimum-sum-of-mountain-triplets-i", "url": "https://leetcode.com/problems/minimum-sum-of-mountain-triplets-i", "title": "minimum-sum-of-mountain-triplets-i", "meta": {"questionId": "3176", "questionFrontendId": "2908", "title": "Minimum Sum of Mountain Triplets I", "titleSlug": "minimum-sum-of-mountain-triplets-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 113, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :\n\n * i < j < k\n * nums[i] < nums[j] 且 nums[k] < nums[j]\n\n请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。\n\n示例 1:\n\n输入:nums = [8,6,1,5,3]\n输出:9\n解释:三元组 (2, 3, 4) 是一个元素和等于 9 的山形三元组,因为:\n- 2 < 3 < 4\n- nums[2] < nums[3] 且 nums[4] < nums[3]\n这个三元组的元素和等于 nums[2] + nums[3] + nums[4] = 9 。可以证明不存在元素和小于 9 的山形三元组。\n\n示例 2:\n\n输入:nums = [5,4,8,7,10,2]\n输出:13\n解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:\n- 1 < 3 < 5\n- nums[1] < nums[3] 且 nums[5] < nums[3]\n这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。\n\n示例 3:\n\n输入:nums = [6,5,4,3,4,5]\n输出:-1\n解释:可以证明 nums 中不存在山形三元组。\n\n\n提示:\n\n * 3 <= nums.length <= 50\n * 1 <= nums[i] <= 50\n\"\"\"\nclass Solution:\n def minimumSum(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :\n\n * i < j < k\n * nums[i] < nums[j] 且 nums[k] < nums[j]\n\n请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。\n\n示例 1:\n\n输入:nums = [8,6,1,5,3]\n输出:9\n解释:三元组 (2, 3, 4) 是一个元素和等于 9 的山形三元组,因为:\n- 2 < 3 < 4\n- nums[2] < nums[3] 且 nums[4] < nums[3]\n这个三元组的元素和等于 nums[2] + nums[3] + nums[4] = 9 。可以证明不存在元素和小于 9 的山形三元组。\n\n示例 2:\n\n输入:nums = [5,4,8,7,10,2]\n输出:13\n解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:\n- 1 < 3 < 5\n- nums[1] < nums[3] 且 nums[5] < nums[3]\n这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。\n\n示例 3:\n\n输入:nums = [6,5,4,3,4,5]\n输出:-1\n解释:可以证明 nums 中不存在山形三元组。\n\n\n提示:\n\n * 3 <= nums.length <= 50\n * 1 <= nums[i] <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumSum(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [8,6,1,5,3] }\nassert my_solution.minimumSum(**test_input) == 9\n\ntest_input = { \"nums\": [5,4,8,7,10,2] }\nassert my_solution.minimumSum(**test_input) == 13\n\ntest_input = { \"nums\": [6,5,4,3,4,5] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [50,50,50] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [49,50,48] }\nassert my_solution.minimumSum(**test_input) == 147\n\ntest_input = { \"nums\": [48,50,49] }\nassert my_solution.minimumSum(**test_input) == 147\n\ntest_input = { \"nums\": [1,1,1] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [1,1,2] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [1,1,3] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [1,2,1] }\nassert my_solution.min
|
|||
|
{"task_id": "weekly-contest-368-minimum-sum-of-mountain-triplets-ii", "url": "https://leetcode.com/problems/minimum-sum-of-mountain-triplets-ii", "title": "minimum-sum-of-mountain-triplets-ii", "meta": {"questionId": "3186", "questionFrontendId": "2909", "title": "Minimum Sum of Mountain Triplets II", "titleSlug": "minimum-sum-of-mountain-triplets-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 160, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :\n\n * i < j < k\n * nums[i] < nums[j] 且 nums[k] < nums[j]\n\n请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。\n\n示例 1:\n\n输入:nums = [8,6,1,5,3]\n输出:9\n解释:三元组 (2, 3, 4) 是一个元素和等于 9 的山形三元组,因为:\n- 2 < 3 < 4\n- nums[2] < nums[3] 且 nums[4] < nums[3]\n这个三元组的元素和等于 nums[2] + nums[3] + nums[4] = 9 。可以证明不存在元素和小于 9 的山形三元组。\n\n示例 2:\n\n输入:nums = [5,4,8,7,10,2]\n输出:13\n解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:\n- 1 < 3 < 5\n- nums[1] < nums[3] 且 nums[5] < nums[3]\n这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。\n\n示例 3:\n\n输入:nums = [6,5,4,3,4,5]\n输出:-1\n解释:可以证明 nums 中不存在山形三元组。\n\n\n提示:\n\n * 3 <= nums.length <= 105\n * 1 <= nums[i] <= 108\n\"\"\"\nclass Solution:\n def minimumSum(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :\n\n * i < j < k\n * nums[i] < nums[j] 且 nums[k] < nums[j]\n\n请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。\n\n示例 1:\n\n输入:nums = [8,6,1,5,3]\n输出:9\n解释:三元组 (2, 3, 4) 是一个元素和等于 9 的山形三元组,因为:\n- 2 < 3 < 4\n- nums[2] < nums[3] 且 nums[4] < nums[3]\n这个三元组的元素和等于 nums[2] + nums[3] + nums[4] = 9 。可以证明不存在元素和小于 9 的山形三元组。\n\n示例 2:\n\n输入:nums = [5,4,8,7,10,2]\n输出:13\n解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:\n- 1 < 3 < 5\n- nums[1] < nums[3] 且 nums[5] < nums[3]\n这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。\n\n示例 3:\n\n输入:nums = [6,5,4,3,4,5]\n输出:-1\n解释:可以证明 nums 中不存在山形三元组。\n\n\n提示:\n\n * 3 <= nums.length <= 105\n * 1 <= nums[i] <= 108\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumSum(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [8,6,1,5,3] }\nassert my_solution.minimumSum(**test_input) == 9\n\ntest_input = { \"nums\": [5,4,8,7,10,2] }\nassert my_solution.minimumSum(**test_input) == 13\n\ntest_input = { \"nums\": [6,5,4,3,4,5] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [50,50,50] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [49,50,48] }\nassert my_solution.minimumSum(**test_input) == 147\n\ntest_input = { \"nums\": [48,50,49] }\nassert my_solution.minimumSum(**test_input) == 147\n\ntest_input = { \"nums\": [99999999,100000000,99999999] }\nassert my_solution.minimumSum(**test_input) == 299999998\n\ntest_input = { \"nums\": [1,1,1] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"nums\": [1,1,2] }\nassert my_solution.minimumSum(**test_input) == -1\n\ntest_input = { \"n
|
|||
|
{"task_id": "weekly-contest-368-minimum-number-of-groups-to-create-a-valid-assignment", "url": "https://leetcode.com/problems/minimum-number-of-groups-to-create-a-valid-assignment", "title": "minimum-number-of-groups-to-create-a-valid-assignment", "meta": {"questionId": "3166", "questionFrontendId": "2910", "title": "Minimum Number of Groups to Create a Valid Assignment", "titleSlug": "minimum-number-of-groups-to-create-a-valid-assignment", "isPaidOnly": false, "difficulty": "Medium", "likes": 231, "dislikes": 151, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 下标从 0 开始的整数数组 nums 。\n\n我们想将下标进行分组,使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。\n\n如果以下条件成立,我们说这个分组方案是合法的:\n\n * 对于每个组 g ,同一组内所有下标在 nums 中对应的数值都相等。\n * 对于任意两个组 g1 和 g2 ,两个组中 下标数量 的 差值不超过 1 。\n\n请你返回一个整数,表示得到一个合法分组方案的 最少 组数。\n\n示例 1:\n\n输入:nums = [3,2,3,2,3]\n输出:2\n解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:\n组 1 -> [0,2,4]\n组 2 -> [1,3]\n所有下标都只属于一个组。\n组 1 中,nums[0] == nums[2] == nums[4] ,所有下标对应的数值都相等。\n组 2 中,nums[1] == nums[3] ,所有下标对应的数值都相等。\n组 1 中下标数目为 3 ,组 2 中下标数目为 2 。\n两者之差不超过 1 。\n无法得到一个小于 2 组的答案,因为如果只有 1 组,组内所有下标对应的数值都要相等。\n所以答案为 2 。\n\n示例 2:\n\n输入:nums = [10,10,10,3,1,1]\n输出:4\n解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:\n组 1 -> [0]\n组 2 -> [1,2]\n组 3 -> [3]\n组 4 -> [4,5]\n分组方案满足题目要求的两个条件。\n无法得到一个小于 4 组的答案。\n所以答案为 4 。\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def minGroupsForValidAssignment(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n 下标从 0 开始的整数数组 nums 。\n\n我们想将下标进行分组,使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。\n\n如果以下条件成立,我们说这个分组方案是合法的:\n\n * 对于每个组 g ,同一组内所有下标在 nums 中对应的数值都相等。\n * 对于任意两个组 g1 和 g2 ,两个组中 下标数量 的 差值不超过 1 。\n\n请你返回一个整数,表示得到一个合法分组方案的 最少 组数。\n\n示例 1:\n\n输入:nums = [3,2,3,2,3]\n输出:2\n解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:\n组 1 -> [0,2,4]\n组 2 -> [1,3]\n所有下标都只属于一个组。\n组 1 中,nums[0] == nums[2] == nums[4] ,所有下标对应的数值都相等。\n组 2 中,nums[1] == nums[3] ,所有下标对应的数值都相等。\n组 1 中下标数目为 3 ,组 2 中下标数目为 2 。\n两者之差不超过 1 。\n无法得到一个小于 2 组的答案,因为如果只有 1 组,组内所有下标对应的数值都要相等。\n所以答案为 2 。\n\n示例 2:\n\n输入:nums = [10,10,10,3,1,1]\n输出:4\n解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:\n组 1 -> [0]\n组 2 -> [1,2]\n组 3 -> [3]\n组 4 -> [4,5]\n分组方案满足题目要求的两个条件。\n无法得到一个小于 4 组的答案。\n所以答案为 4 。\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minGroupsForValidAssignment(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [3,2,3,2,3] }\nassert my_solution.minGroupsForValidAssignment(**test_input) == 2\n
|
|||
|
{"task_id": "weekly-contest-368-minimum-changes-to-make-k-semi-palindromes", "url": "https://leetcode.com/problems/minimum-changes-to-make-k-semi-palindromes", "title": "minimum-changes-to-make-k-semi-palindromes", "meta": {"questionId": "2879", "questionFrontendId": "2911", "title": "Minimum Changes to Make K Semi-palindromes", "titleSlug": "minimum-changes-to-make-k-semi-palindromes", "isPaidOnly": false, "difficulty": "Hard", "likes": 50, "dislikes": 78, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。\n\n请你返回一个整数,表示需要修改的 最少 字符数目。\n\n注意:\n\n * 如果一个字符串从左往右和从右往左读是一样的,那么它是一个 回文串 。\n * 如果长度为 len 的字符串存在一个满足 1 <= d < len 的正整数 d ,len % d == 0 成立且所有对 d 做除法余数相同的下标对应的字符连起来得到的字符串都是 回文串 ,那么我们说这个字符串是 半回文串 。比方说 \"aa\" ,\"aba\" ,\"adbgad\" 和 \"abab\" 都是 半回文串 ,而 \"a\" ,\"ab\" 和 \"abca\" 不是。\n * 子字符串 指的是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:s = \"abcac\", k = 2\n输出:1\n解释:我们可以将 s 分成子字符串 \"ab\" 和 \"cac\" 。子字符串 \"cac\" 已经是半回文串。如果我们将 \"ab\" 变成 \"aa\" ,它也会变成一个 d = 1 的半回文串。\n该方案是将 s 分成 2 个子字符串的前提下,得到 2 个半回文子字符串需要的最少修改次数。所以答案为 1 。\n\n示例 2:\n\n输入:s = \"abcdef\", k = 2\n输出:2\n解释:我们可以将 s 分成子字符串 \"abc\" 和 \"def\" 。子字符串 \"abc\" 和 \"def\" 都需要修改一个字符得到半回文串,所以我们总共需要 2 次字符修改使所有子字符串变成半回文串。\n该方案是将 s 分成 2 个子字符串的前提下,得到 2 个半回文子字符串需要的最少修改次数。所以答案为 2 。\n\n示例 3:\n\n输入:s = \"aabbaa\", k = 3\n输出:0\n解释:我们可以将 s 分成子字符串 \"aa\" ,\"bb\" 和 \"aa\" 。\n字符串 \"aa\" 和 \"bb\" 都已经是半回文串了。所以答案为 0 。\n\n\n提示:\n\n * 2 <= s.length <= 200\n * 1 <= k <= s.length / 2\n * s 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def minimumChanges(self, s: str, k: int) -> int:\n ", "prompt_sft": "给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。\n\n请你返回一个整数,表示需要修改的 最少 字符数目。\n\n注意:\n\n * 如果一个字符串从左往右和从右往左读是一样的,那么它是一个 回文串 。\n * 如果长度为 len 的字符串存在一个满足 1 <= d < len 的正整数 d ,len % d == 0 成立且所有对 d 做除法余数相同的下标对应的字符连起来得到的字符串都是 回文串 ,那么我们说这个字符串是 半回文串 。比方说 \"aa\" ,\"aba\" ,\"adbgad\" 和 \"abab\" 都是 半回文串 ,而 \"a\" ,\"ab\" 和 \"abca\" 不是。\n * 子字符串 指的是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:s = \"abcac\", k = 2\n输出:1\n解释:我们可以将 s 分成子字符串 \"ab\" 和 \"cac\" 。子字符串 \"cac\" 已经是半回文串。如果我们将 \"ab\" 变成 \"aa\" ,它也会变成一个 d = 1 的半回文串。\n该方案是将 s 分成 2 个子字符串的前提下,得到 2 个半回文子字符串需要的最少修改次数。所以答案为 1 。\n\n示例 2:\n\n输入:s = \"abcdef\", k = 2\n输出:2\n解释:我们可以将 s 分成子字符串 \"abc\" 和 \"def\" 。子字符串 \"abc\" 和 \"def\" 都需要修改一个字符得
|
|||
|
{"task_id": "weekly-contest-367-find-indices-with-index-and-value-difference-i", "url": "https://leetcode.com/problems/find-indices-with-index-and-value-difference-i", "title": "find-indices-with-index-and-value-difference-i", "meta": {"questionId": "3165", "questionFrontendId": "2903", "title": "Find Indices With Index and Value Difference I", "titleSlug": "find-indices-with-index-and-value-difference-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 97, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。\n\n你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j :\n\n * abs(i - j) >= indexDifference 且\n * abs(nums[i] - nums[j]) >= valueDifference\n\n返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。\n\n注意:i 和 j 可能 相等 。\n\n示例 1:\n\n输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4\n输出:[0,3]\n解释:在示例中,可以选择 i = 0 和 j = 3 。\nabs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。\n因此,[0,3] 是一个符合题目要求的答案。\n[3,0] 也是符合题目要求的答案。\n\n示例 2:\n\n输入:nums = [2,1], indexDifference = 0, valueDifference = 0\n输出:[0,0]\n解释:\n在示例中,可以选择 i = 0 和 j = 0 。\nabs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。\n因此,[0,0] 是一个符合题目要求的答案。\n[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。\n\n示例 3:\n\n输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4\n输出:[-1,-1]\n解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。\n因此,返回 [-1,-1] 。\n\n提示:\n\n * 1 <= n == nums.length <= 100\n * 0 <= nums[i] <= 50\n * 0 <= indexDifference <= 100\n * 0 <= valueDifference <= 50\n\"\"\"\nclass Solution:\n def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。\n\n你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j :\n\n * abs(i - j) >= indexDifference 且\n * abs(nums[i] - nums[j]) >= valueDifference\n\n返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。\n\n注意:i 和 j 可能 相等 。\n\n示例 1:\n\n输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4\n输出:[0,3]\n解释:在示例中,可以选择 i = 0 和 j = 3 。\nabs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。\n因此,[0,3] 是一个符合题目要求的答案。\n[3,0] 也是符合题目要求的答案。\n\n示例 2:\n\n输入:nums = [2,1], indexDifference = 0, valueDifference = 0\n输出:[0,0]\n解释:\n在示例中,可以选择 i = 0 和 j = 0 。\nabs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。\n因此,[0,0] 是一个符合题目要求的答案。\n[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。\n\n示例 3:\n\n输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4\n输出:[-1,-1]\n解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。\n因此,返回 [-1,-1] 。\n\n提示:\n\n * 1 <= n == nums.length <= 100\n * 0 <= nums[i] <= 50\n * 0 <= indexDifference <= 100\n * 0 <= valueDifference <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,1,4,1], \
|
|||
|
{"task_id": "weekly-contest-367-shortest-and-lexicographically-smallest-beautiful-string", "url": "https://leetcode.com/problems/shortest-and-lexicographically-smallest-beautiful-string", "title": "shortest-and-lexicographically-smallest-beautiful-string", "meta": {"questionId": "3150", "questionFrontendId": "2904", "title": "Shortest and Lexicographically Smallest Beautiful String", "titleSlug": "shortest-and-lexicographically-smallest-beautiful-string", "isPaidOnly": false, "difficulty": "Medium", "likes": 147, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个二进制字符串 s 和一个正整数 k 。\n\n如果 s 的某个子字符串中 1 的个数恰好等于 k ,则称这个子字符串是一个 美丽子字符串 。\n\n令 len 等于 最短 美丽子字符串的长度。\n\n返回长度等于 len 且字典序 最小 的美丽子字符串。如果 s 中不含美丽子字符串,则返回一个 空 字符串。\n\n对于相同长度的两个字符串 a 和 b ,如果在 a 和 b 出现不同的第一个位置上,a 中该位置上的字符严格大于 b 中的对应字符,则认为字符串 a 字典序 大于 字符串 b 。\n\n * 例如,\"abcd\" 的字典序大于 \"abcc\" ,因为两个字符串出现不同的第一个位置对应第四个字符,而 d 大于 c 。\n\n示例 1:\n\n输入:s = \"100011001\", k = 3\n输出:\"11001\"\n解释:示例中共有 7 个美丽子字符串:\n1. 子字符串 \"100011001\" 。\n2. 子字符串 \"100011001\" 。\n3. 子字符串 \"100011001\" 。\n4. 子字符串 \"100011001\" 。\n5. 子字符串 \"100011001\" 。\n6. 子字符串 \"100011001\" 。\n7. 子字符串 \"100011001\" 。\n最短美丽子字符串的长度是 5 。\n长度为 5 且字典序最小的美丽子字符串是子字符串 \"11001\" 。\n\n示例 2:\n\n输入:s = \"1011\", k = 2\n输出:\"11\"\n解释:示例中共有 3 个美丽子字符串:\n1. 子字符串 \"1011\" 。\n2. 子字符串 \"1011\" 。\n3. 子字符串 \"1011\" 。\n最短美丽子字符串的长度是 2 。\n长度为 2 且字典序最小的美丽子字符串是子字符串 \"11\" 。\n\n示例 3:\n\n输入:s = \"000\", k = 1\n输出:\"\"\n解释:示例中不存在美丽子字符串。\n\n\n提示:\n\n * 1 <= s.length <= 100\n * 1 <= k <= s.length\n\"\"\"\nclass Solution:\n def shortestBeautifulSubstring(self, s: str, k: int) -> str:\n ", "prompt_sft": "给你一个二进制字符串 s 和一个正整数 k 。\n\n如果 s 的某个子字符串中 1 的个数恰好等于 k ,则称这个子字符串是一个 美丽子字符串 。\n\n令 len 等于 最短 美丽子字符串的长度。\n\n返回长度等于 len 且字典序 最小 的美丽子字符串。如果 s 中不含美丽子字符串,则返回一个 空 字符串。\n\n对于相同长度的两个字符串 a 和 b ,如果在 a 和 b 出现不同的第一个位置上,a 中该位置上的字符严格大于 b 中的对应字符,则认为字符串 a 字典序 大于 字符串 b 。\n\n * 例如,\"abcd\" 的字典序大于 \"abcc\" ,因为两个字符串出现不同的第一个位置对应第四个字符,而 d 大于 c 。\n\n示例 1:\n\n输入:s = \"100011001\", k = 3\n输出:\"11001\"\n解释:示例中共有 7 个美丽子字符串:\n1. 子字符串 \"100011001\" 。\n2. 子字符串 \"100011001\" 。\n3. 子字符串 \"100011001\" 。\n4. 子字符串 \"100011001\" 。\n5. 子字符串 \"100011001\" 。\n6. 子字符串 \"100011001\" 。\n7. 子字符串 \"100011001\" 。\n最短美丽子字符串的长度是 5 。\n长度为 5 且字典序最小的美丽子字符串是子字符串 \"11001\" 。\n\n示例 2:\n\n输入:s = \"1011\", k = 2\n输出:\"11\"\n解释:示例中共有 3 个美丽子字符串:\n1. 子字符串 \"1011\" 。\n2. 子字符串 \"1011\" 。\n3. 子字符串 \"1011\" 。\n最短美丽子字符串的长度是 2 。\n长度为 2 且字典序最小的美丽子字符串是子字符串 \"11\" 。\n\n示例 3:\n\n输入:s = \"000\", k = 1\n输出:\"\"\n解<6E>
|
|||
|
{"task_id": "weekly-contest-367-find-indices-with-index-and-value-difference-ii", "url": "https://leetcode.com/problems/find-indices-with-index-and-value-difference-ii", "title": "find-indices-with-index-and-value-difference-ii", "meta": {"questionId": "3170", "questionFrontendId": "2905", "title": "Find Indices With Index and Value Difference II", "titleSlug": "find-indices-with-index-and-value-difference-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 218, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。\n\n你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j :\n\n * abs(i - j) >= indexDifference 且\n * abs(nums[i] - nums[j]) >= valueDifference\n\n返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。\n\n注意:i 和 j 可能 相等 。\n\n示例 1:\n\n输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4\n输出:[0,3]\n解释:在示例中,可以选择 i = 0 和 j = 3 。\nabs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。\n因此,[0,3] 是一个符合题目要求的答案。\n[3,0] 也是符合题目要求的答案。\n\n示例 2:\n\n输入:nums = [2,1], indexDifference = 0, valueDifference = 0\n输出:[0,0]\n解释:\n在示例中,可以选择 i = 0 和 j = 0 。\nabs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。\n因此,[0,0] 是一个符合题目要求的答案。\n[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。\n\n示例 3:\n\n输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4\n输出:[-1,-1]\n解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。\n因此,返回 [-1,-1] 。\n\n提示:\n\n * 1 <= n == nums.length <= 105\n * 0 <= nums[i] <= 109\n * 0 <= indexDifference <= 105\n * 0 <= valueDifference <= 109\n\"\"\"\nclass Solution:\n def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。\n\n你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j :\n\n * abs(i - j) >= indexDifference 且\n * abs(nums[i] - nums[j]) >= valueDifference\n\n返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。\n\n注意:i 和 j 可能 相等 。\n\n示例 1:\n\n输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4\n输出:[0,3]\n解释:在示例中,可以选择 i = 0 和 j = 3 。\nabs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。\n因此,[0,3] 是一个符合题目要求的答案。\n[3,0] 也是符合题目要求的答案。\n\n示例 2:\n\n输入:nums = [2,1], indexDifference = 0, valueDifference = 0\n输出:[0,0]\n解释:\n在示例中,可以选择 i = 0 和 j = 0 。\nabs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。\n因此,[0,0] 是一个符合题目要求的答案。\n[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。\n\n示例 3:\n\n输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4\n输出:[-1,-1]\n解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。\n因此,返回 [-1,-1] 。\n\n提示:\n\n * 1 <= n == nums.length <= 105\n * 0 <= nums[i] <= 109\n * 0 <= indexDifference <= 105\n * 0 <= valueDifference <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\":
|
|||
|
{"task_id": "weekly-contest-367-construct-product-matrix", "url": "https://leetcode.com/problems/construct-product-matrix", "title": "construct-product-matrix", "meta": {"questionId": "3031", "questionFrontendId": "2906", "title": "Construct Product Matrix", "titleSlug": "construct-product-matrix", "isPaidOnly": false, "difficulty": "Medium", "likes": 187, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 :\n\n * 对于每个元素 p[i][j] ,它的值等于除了 grid[i][j] 外所有元素的乘积。乘积对 12345 取余数。\n\n返回 grid 的乘积矩阵。\n\n示例 1:\n\n输入:grid = [[1,2],[3,4]]\n输出:[[24,12],[8,6]]\n解释:p[0][0] = grid[0][1] * grid[1][0] * grid[1][1] = 2 * 3 * 4 = 24\np[0][1] = grid[0][0] * grid[1][0] * grid[1][1] = 1 * 3 * 4 = 12\np[1][0] = grid[0][0] * grid[0][1] * grid[1][1] = 1 * 2 * 4 = 8\np[1][1] = grid[0][0] * grid[0][1] * grid[1][0] = 1 * 2 * 3 = 6\n所以答案是 [[24,12],[8,6]] 。\n\n示例 2:\n\n输入:grid = [[12345],[2],[1]]\n输出:[[2],[0],[0]]\n解释:p[0][0] = grid[0][1] * grid[0][2] = 2 * 1 = 2\np[0][1] = grid[0][0] * grid[0][2] = 12345 * 1 = 12345. 12345 % 12345 = 0 ,所以 p[0][1] = 0\np[0][2] = grid[0][0] * grid[0][1] = 12345 * 2 = 24690. 24690 % 12345 = 0 ,所以 p[0][2] = 0\n所以答案是 [[2],[0],[0]] 。\n\n提示:\n\n * 1 <= n == grid.length <= 105\n * 1 <= m == grid[i].length <= 105\n * 2 <= n * m <= 105\n * 1 <= grid[i][j] <= 109\n\"\"\"\nclass Solution:\n def constructProductMatrix(self, grid: List[List[int]]) -> List[List[int]]:\n ", "prompt_sft": "给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 :\n\n * 对于每个元素 p[i][j] ,它的值等于除了 grid[i][j] 外所有元素的乘积。乘积对 12345 取余数。\n\n返回 grid 的乘积矩阵。\n\n示例 1:\n\n输入:grid = [[1,2],[3,4]]\n输出:[[24,12],[8,6]]\n解释:p[0][0] = grid[0][1] * grid[1][0] * grid[1][1] = 2 * 3 * 4 = 24\np[0][1] = grid[0][0] * grid[1][0] * grid[1][1] = 1 * 3 * 4 = 12\np[1][0] = grid[0][0] * grid[0][1] * grid[1][1] = 1 * 2 * 4 = 8\np[1][1] = grid[0][0] * grid[0][1] * grid[1][0] = 1 * 2 * 3 = 6\n所以答案是 [[24,12],[8,6]] 。\n\n示例 2:\n\n输入:grid = [[12345],[2],[1]]\n输出:[[2],[0],[0]]\n解释:p[0][0] = grid[0][1] * grid[0][2] = 2 * 1 = 2\np[0][1] = grid[0][0] * grid[0][2] = 12345 * 1 = 12345. 12345 % 12345 = 0 ,所以 p[0][1] = 0\np[0][2] = grid[0][0] * grid[0][1] = 12345 * 2 = 24690. 24690 % 12345 = 0 ,所以 p[0][2] = 0\n所以答案是 [[2],[0],[0]] 。\n\n提示:\n\n * 1 <= n == grid.length <= 105\n * 1 <= m == grid[i].length <= 105\n * 2 <= n * m <= 105\n * 1 <= grid[i][j] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def constructProductMatrix(self, grid: List[List[int]]) -> List[List[int]]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"grid\": [[1,2],[3,4]] }\nassert my_solution.constructProductMatrix(**test_input) == [[24,12],[8,6]]\n\ntest_input = { \"grid\": [[12345],[2],[1]] }\nassert my_solution.constructProductMatrix(**test_input) == [[2],[0],[0]]\n\ntest_input = { \"grid\": [[1],[2]] }\nassert my_solution.constructProductMatrix(**test_input) == [[2],[1]]\n\ntest_input = { \"grid\": [[1,2]] }\nassert my_solution.constructProductMatrix(**test_input) == [[2,1]]\n\ntest_input = { \"grid\": [[12345,12345]] }\nassert my_solution.constructProductMatrix(**test_input) == [[0,0]]\n\ntest_input = { \"grid\": [[1],[4]] }\nassert my_solution.constructProductMatrix(**test_input) == [[4],[1]]\n\ntest_input = { \"grid\": [[3],[4]] }\nassert my_solution.constructProductMatrix(**test_input) == [[4],[3]]\n\ntest_input = { \"grid\": [[4],[
|
|||
|
{"task_id": "biweekly-contest-115-last-visited-integers", "url": "https://leetcode.com/problems/last-visited-integers", "title": "last-visited-integers", "meta": {"questionId": "3164", "questionFrontendId": "2899", "title": "Last Visited Integers", "titleSlug": "last-visited-integers", "isPaidOnly": false, "difficulty": "Easy", "likes": 74, "dislikes": 139, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串数组 words ,其中 words[i] 要么是一个字符串形式的正整数,要么是字符串 \"prev\" 。\n\n我们从数组的开头开始遍历,对于 words 中的每个 \"prev\" 字符串,找到 words 中的 上一个遍历的整数 ,定义如下:\n\n * k 表示到当前位置为止的连续 \"prev\" 字符串数目(包含当前字符串),令下标从 0 开始的 整数 数组 nums 表示目前为止遍历过的所有整数,同时用 nums_reverse 表示 nums 反转得到的数组,那么当前 \"prev\" 对应的 上一个遍历的整数 是 nums_reverse 数组中下标为 (k - 1) 的整数。\n * 如果 k 比目前为止遍历过的整数数目 更多 ,那么上一个遍历的整数为 -1 。\n\n请你返回一个整数数组,包含所有上一个遍历的整数。\n\n示例 1:\n\n输入:words = [\"1\",\"2\",\"prev\",\"prev\",\"prev\"]\n输出:[2,1,-1]\n解释:\n对于下标为 2 处的 \"prev\" ,上一个遍历的整数是 2 ,因为连续 \"prev\" 数目为 1 ,同时在数组 reverse_nums 中,第一个元素是 2 。\n对于下标为 3 处的 \"prev\" ,上一个遍历的整数是 1 ,因为连续 \"prev\" 数目为 2 ,同时在数组 reverse_nums 中,第二个元素是 1 。\n对于下标为 4 处的 \"prev\" ,上一个遍历的整数是 -1 ,因为连续 \"prev\" 数目为 3 ,但总共只遍历过 2 个整数。\n\n示例 2:\n\n输入:words = [\"1\",\"prev\",\"2\",\"prev\",\"prev\"]\n输出:[1,2,1]\n解释:\n对于下标为 1 处的 \"prev\" ,上一个遍历的整数是 1 。\n对于下标为 3 处的 \"prev\" ,上一个遍历的整数是 2 。\n对于下标为 4 处的 \"prev\" ,上一个遍历的整数是 1 ,因为连续 \"prev\" 数目为 2 ,同时在数组 reverse_nums 中,第二个元素是 1 。\n\n\n提示:\n\n * 1 <= words.length <= 100\n * words[i] == \"prev\" 或 1 <= int(words[i]) <= 100\n\"\"\"\nclass Solution:\n def lastVisitedIntegers(self, words: List[str]) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串数组 words ,其中 words[i] 要么是一个字符串形式的正整数,要么是字符串 \"prev\" 。\n\n我们从数组的开头开始遍历,对于 words 中的每个 \"prev\" 字符串,找到 words 中的 上一个遍历的整数 ,定义如下:\n\n * k 表示到当前位置为止的连续 \"prev\" 字符串数目(包含当前字符串),令下标从 0 开始的 整数 数组 nums 表示目前为止遍历过的所有整数,同时用 nums_reverse 表示 nums 反转得到的数组,那么当前 \"prev\" 对应的 上一个遍历的整数 是 nums_reverse 数组中下标为 (k - 1) 的整数。\n * 如果 k 比目前为止遍历过的整数数目 更多 ,那么上一个遍历的整数为 -1 。\n\n请你返回一个整数数组,包含所有上一个遍历的整数。\n\n示例 1:\n\n输入:words = [\"1\",\"2\",\"prev\",\"prev\",\"prev\"]\n输出:[2,1,-1]\n解释:\n对于下标为 2 处的 \"prev\" ,上一个遍历的整数是 2 ,因为连续 \"prev\" 数目为 1 ,同时在数组 reverse_nums 中,第一个元素是 2 。\n对于下标为 3 处的 \"prev\" ,上一个遍历的整数是 1 ,因为连续 \"prev\" 数目为 2 ,同时在数组 reverse_nums 中,第二个元素是 1 。\n对于下标为 4 处的 \"prev\" ,上一个遍历的整数是 -1 ,因为连续 \"prev\" 数目为 3 ,但总共只遍历过 2 个整数。\n\n示例 2:\n\n输入:words = [\"1\",\"prev\",\"2\",\"prev\",\"prev\"]\n输出:[1,2,1]\n解释:\n对<6E>
|
|||
|
{"task_id": "biweekly-contest-115-longest-unequal-adjacent-groups-subsequence-i", "url": "https://leetcode.com/problems/longest-unequal-adjacent-groups-subsequence-i", "title": "longest-unequal-adjacent-groups-subsequence-i", "meta": {"questionId": "3143", "questionFrontendId": "2900", "title": "Longest Unequal Adjacent Groups Subsequence I", "titleSlug": "longest-unequal-adjacent-groups-subsequence-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 86, "dislikes": 26, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数 n 和一个下标从 0 开始的字符串数组 words ,和一个下标从 0 开始的 二进制 数组 groups ,两个数组长度都是 n 。\n\n你需要从下标 [0, 1, ..., n - 1] 中选出一个 最长子序列 ,将这个子序列记作长度为 k 的 [i0, i1, ..., ik - 1] ,对于所有满足 0 < j + 1 < k 的 j 都有 groups[ij] != groups[ij + 1] 。\n\n请你返回一个字符串数组,它是下标子序列 依次 对应 words 数组中的字符串连接形成的字符串数组。如果有多个答案,返回任意一个。\n\n子序列 指的是从原数组中删掉一些(也可能一个也不删掉)元素,剩余元素不改变相对位置得到的新的数组。\n\n注意:words 中的字符串长度可能 不相等 。\n\n示例 1:\n\n输入:n = 3, words = [\"e\",\"a\",\"b\"], groups = [0,0,1]\n输出:[\"e\",\"b\"]\n解释:一个可行的子序列是 [0,2] ,因为 groups[0] != groups[2] 。\n所以一个可行的答案是 [words[0],words[2]] = [\"e\",\"b\"] 。\n另一个可行的子序列是 [1,2] ,因为 groups[1] != groups[2] 。\n得到答案为 [words[1],words[2]] = [\"a\",\"b\"] 。\n这也是一个可行的答案。\n符合题意的最长子序列的长度为 2 。\n\n示例 2:\n\n输入:n = 4, words = [\"a\",\"b\",\"c\",\"d\"], groups = [1,0,1,1]\n输出:[\"a\",\"b\",\"c\"]\n解释:一个可行的子序列为 [0,1,2] 因为 groups[0] != groups[1] 且 groups[1] != groups[2] 。\n所以一个可行的答案是 [words[0],words[1],words[2]] = [\"a\",\"b\",\"c\"] 。\n另一个可行的子序列为 [0,1,3] 因为 groups[0] != groups[1] 且 groups[1] != groups[3] 。\n得到答案为 [words[0],words[1],words[3]] = [\"a\",\"b\",\"d\"] 。\n这也是一个可行的答案。\n符合题意的最长子序列的长度为 3 。\n\n提示:\n\n * 1 <= n == words.length == groups.length <= 100\n * 1 <= words[i].length <= 10\n * 0 <= groups[i] < 2\n * words 中的字符串 互不相同 。\n * words[i] 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def getWordsInLongestSubsequence(self, n: int, words: List[str], groups: List[int]) -> List[str]:\n ", "prompt_sft": "给你一个整数 n 和一个下标从 0 开始的字符串数组 words ,和一个下标从 0 开始的 二进制 数组 groups ,两个数组长度都是 n 。\n\n你需要从下标 [0, 1, ..., n - 1] 中选出一个 最长子序列 ,将这个子序列记作长度为 k 的 [i0, i1, ..., ik - 1] ,对于所有满足 0 < j + 1 < k 的 j 都有 groups[ij] != groups[ij + 1] 。\n\n请你返回一个字符串数组,它是下标子序列 依次 对应 words 数组中的字符串连接形成的字符串数组。如果有多个答案,返回任意一个。\n\n子序列 指的是从原数组中删掉一些(也可能一个也不删掉)元素,剩余元素不改变相对位置得到的新的数组。\n\n注意:words 中的字符串长度可能 不相等 。\n\n示例 1:\n\n输入:n = 3, words = [\"e\",\"a\",\"b\"], groups = [0,0,1]\n输出:[\"e\",\"b\"]\n解释:一个可行的子序列是 [0,2] ,因为 groups[0] != groups[2] 。\n所以一个可行的答案是 [words[0],words[2]] = [\"e\",\"b\"] 。\n另一个可行的子序列是 [1,2] ,因为 groups[1] != groups[2] 。\n得到答案为 [words[1],words[2]] = [\"a\",\"b\"] 。\n这也是一个可行的答案。\n符合题意的最长子序列的长度为 2 。\n\n示例 2:\n\n输入:n = 4, words = [\"a\",\"b\",\"c\",\"d\"],
|
|||
|
{"task_id": "biweekly-contest-115-longest-unequal-adjacent-groups-subsequence-ii", "url": "https://leetcode.com/problems/longest-unequal-adjacent-groups-subsequence-ii", "title": "longest-unequal-adjacent-groups-subsequence-ii", "meta": {"questionId": "3142", "questionFrontendId": "2901", "title": "Longest Unequal Adjacent Groups Subsequence II", "titleSlug": "longest-unequal-adjacent-groups-subsequence-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 172, "dislikes": 16, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数 n 和一个下标从 0 开始的字符串数组 words ,和一个下标从 0 开始的数组 groups ,两个数组长度都是 n 。\n\n两个长度相等字符串的 汉明距离 定义为对应位置字符 不同 的数目。\n\n你需要从下标 [0, 1, ..., n - 1] 中选出一个 最长子序列 ,将这个子序列记作长度为 k 的 [i0, i1, ..., ik - 1] ,它需要满足以下条件:\n\n * 相邻 下标对应的 groups 值 不同。即,对于所有满足 0 < j + 1 < k 的 j 都有 groups[ij] != groups[ij + 1] 。\n * 对于所有 0 < j + 1 < k 的下标 j ,都满足 words[ij] 和 words[ij + 1] 的长度 相等 ,且两个字符串之间的 汉明距离 为 1 。\n\n请你返回一个字符串数组,它是下标子序列 依次 对应 words 数组中的字符串连接形成的字符串数组。如果有多个答案,返回任意一个。\n\n子序列 指的是从原数组中删掉一些(也可能一个也不删掉)元素,剩余元素不改变相对位置得到的新的数组。\n\n注意:words 中的字符串长度可能 不相等 。\n\n示例 1:\n\n输入:n = 3, words = [\"bab\",\"dab\",\"cab\"], groups = [1,2,2]\n输出:[\"bab\",\"cab\"]\n解释:一个可行的子序列是 [0,2] 。\n- groups[0] != groups[2]\n- words[0].length == words[2].length 且它们之间的汉明距离为 1 。\n所以一个可行的答案是 [words[0],words[2]] = [\"bab\",\"cab\"] 。\n另一个可行的子序列是 [0,1] 。\n- groups[0] != groups[1]\n- words[0].length = words[1].length 且它们之间的汉明距离为 1 。\n所以另一个可行的答案是 [words[0],words[1]] = [\"bab\",\"dab\"] 。\n符合题意的最长子序列的长度为 2 。\n\n示例 2:\n\n输入:n = 4, words = [\"a\",\"b\",\"c\",\"d\"], groups = [1,2,3,4]\n输出:[\"a\",\"b\",\"c\",\"d\"]\n解释:我们选择子序列 [0,1,2,3] 。\n它同时满足两个条件。\n所以答案为 [words[0],words[1],words[2],words[3]] = [\"a\",\"b\",\"c\",\"d\"] 。\n它是所有下标子序列里最长且满足所有条件的。\n所以它是唯一的答案。\n\n\n提示:\n\n * 1 <= n == words.length == groups.length <= 1000\n * 1 <= words[i].length <= 10\n * 1 <= groups[i] <= n\n * words 中的字符串 互不相同 。\n * words[i] 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def getWordsInLongestSubsequence(self, n: int, words: List[str], groups: List[int]) -> List[str]:\n ", "prompt_sft": "给你一个整数 n 和一个下标从 0 开始的字符串数组 words ,和一个下标从 0 开始的数组 groups ,两个数组长度都是 n 。\n\n两个长度相等字符串的 汉明距离 定义为对应位置字符 不同 的数目。\n\n你需要从下标 [0, 1, ..., n - 1] 中选出一个 最长子序列 ,将这个子序列记作长度为 k 的 [i0, i1, ..., ik - 1] ,它需要满足以下条件:\n\n * 相邻 下标对应的 groups 值 不同。即,对于所有满足 0 < j + 1 < k 的 j 都有 groups[ij] != groups[ij + 1] 。\n * 对于所有 0 < j + 1 < k 的下标 j ,都满足 words[ij] 和 words[ij + 1] 的长度 相等 ,且两个字符串之间的 汉明距离 为 1 。\n\n请你返回一个字符串数组,它是下标子序列 依次 对应 words 数组中的字符串连接形成的字符串数组。如果有多个答案,返回任意一个。\n\n子序列 指的是从原数组中删掉一些(也可能一个也不删掉)元素,剩余元素不<E7B4A0><E4B88D>
|
|||
|
{"task_id": "biweekly-contest-115-count-of-sub-multisets-with-bounded-sum", "url": "https://leetcode.com/problems/count-of-sub-multisets-with-bounded-sum", "title": "count-of-sub-multisets-with-bounded-sum", "meta": {"questionId": "3091", "questionFrontendId": "2902", "title": "Count of Sub-Multisets With Bounded Sum", "titleSlug": "count-of-sub-multisets-with-bounded-sum", "isPaidOnly": false, "difficulty": "Hard", "likes": 125, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的非负整数数组 nums 和两个整数 l 和 r 。\n\n请你返回 nums 中子多重集合的和在闭区间 [l, r] 之间的 子多重集合的数目 。\n\n由于答案可能很大,请你将答案对 109 + 7 取余后返回。\n\n子多重集合 指的是从数组中选出一些元素构成的 无序 集合,每个元素 x 出现的次数可以是 0, 1, ..., occ[x] 次,其中 occ[x] 是元素 x 在数组中的出现次数。\n\n注意:\n\n * 如果两个子多重集合中的元素排序后一模一样,那么它们两个是相同的 子多重集合 。\n * 空 集合的和是 0 。\n\n示例 1:\n\n输入:nums = [1,2,2,3], l = 6, r = 6\n输出:1\n解释:唯一和为 6 的子集合是 {1, 2, 3} 。\n\n示例 2:\n\n输入:nums = [2,1,4,2,7], l = 1, r = 5\n输出:7\n解释:和在闭区间 [1, 5] 之间的子多重集合为 {1} ,{2} ,{4} ,{2, 2} ,{1, 2} ,{1, 4} 和 {1, 2, 2} 。\n\n示例 3:\n\n输入:nums = [1,2,1,3,5,2], l = 3, r = 5\n输出:9\n解释:和在闭区间 [3, 5] 之间的子多重集合为 {3} ,{5} ,{1, 2} ,{1, 3} ,{2, 2} ,{2, 3} ,{1, 1, 2} ,{1, 1, 3} 和 {1, 2, 2} 。\n\n提示:\n\n * 1 <= nums.length <= 2 * 104\n * 0 <= nums[i] <= 2 * 104\n * nums 的和不超过 2 * 104 。\n * 0 <= l <= r <= 2 * 104\n\"\"\"\nclass Solution:\n def countSubMultisets(self, nums: List[int], l: int, r: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的非负整数数组 nums 和两个整数 l 和 r 。\n\n请你返回 nums 中子多重集合的和在闭区间 [l, r] 之间的 子多重集合的数目 。\n\n由于答案可能很大,请你将答案对 109 + 7 取余后返回。\n\n子多重集合 指的是从数组中选出一些元素构成的 无序 集合,每个元素 x 出现的次数可以是 0, 1, ..., occ[x] 次,其中 occ[x] 是元素 x 在数组中的出现次数。\n\n注意:\n\n * 如果两个子多重集合中的元素排序后一模一样,那么它们两个是相同的 子多重集合 。\n * 空 集合的和是 0 。\n\n示例 1:\n\n输入:nums = [1,2,2,3], l = 6, r = 6\n输出:1\n解释:唯一和为 6 的子集合是 {1, 2, 3} 。\n\n示例 2:\n\n输入:nums = [2,1,4,2,7], l = 1, r = 5\n输出:7\n解释:和在闭区间 [1, 5] 之间的子多重集合为 {1} ,{2} ,{4} ,{2, 2} ,{1, 2} ,{1, 4} 和 {1, 2, 2} 。\n\n示例 3:\n\n输入:nums = [1,2,1,3,5,2], l = 3, r = 5\n输出:9\n解释:和在闭区间 [3, 5] 之间的子多重集合为 {3} ,{5} ,{1, 2} ,{1, 3} ,{2, 2} ,{2, 3} ,{1, 1, 2} ,{1, 1, 3} 和 {1, 2, 2} 。\n\n提示:\n\n * 1 <= nums.length <= 2 * 104\n * 0 <= nums[i] <= 2 * 104\n * nums 的和不超过 2 * 104 。\n * 0 <= l <= r <= 2 * 104\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countSubMultisets(self, nums: List[int], l: int, r: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,2,3], \"l\": 6, \"r\": 6 }\nassert my_solution.countSubMultisets(**test_input) == 1\n\ntest_input = { \"nums\": [2,1,4,2,7], \"l\": 1, \"r\": 5 }\nassert my_solution.countSubMultisets(**test_input) == 7\n\ntest_input = { \"nums\": [1,2,1,3,5,2], \"l\": 3, \"r\": 5 }\nassert my_solution.countSubMultisets(**test_input) == 9\n\ntest_input = { \"nums\": [0,0,1,2,3], \"l\": 2, \"r\": 3 }\nassert my_solution.countSubMultisets(**test_input) == 9\n\ntest_input = { \"nums\": [0,0,0,0,0], \"l\": 0, \"r\": 0 }\nassert my_solution.c
|
|||
|
{"task_id": "weekly-contest-366-divisible-and-non-divisible-sums-difference", "url": "https://leetcode.com/problems/divisible-and-non-divisible-sums-difference", "title": "divisible-and-non-divisible-sums-difference", "meta": {"questionId": "3172", "questionFrontendId": "2894", "title": "Divisible and Non-divisible Sums Difference", "titleSlug": "divisible-and-non-divisible-sums-difference", "isPaidOnly": false, "difficulty": "Easy", "likes": 115, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数 n 和 m 。\n\n现定义两个整数 num1 和 num2 ,如下所示:\n\n * num1:范围 [1, n] 内所有 无法被 m 整除 的整数之和。\n * num2:范围 [1, n] 内所有 能够被 m 整除 的整数之和。\n\n返回整数 num1 - num2 。\n\n示例 1:\n\n输入:n = 10, m = 3\n输出:19\n解释:在这个示例中:\n- 范围 [1, 10] 内无法被 3 整除的整数为 [1,2,4,5,7,8,10] ,num1 = 这些整数之和 = 37 。\n- 范围 [1, 10] 内能够被 3 整除的整数为 [3,6,9] ,num2 = 这些整数之和 = 18 。\n返回 37 - 18 = 19 作为答案。\n\n示例 2:\n\n输入:n = 5, m = 6\n输出:15\n解释:在这个示例中:\n- 范围 [1, 5] 内无法被 6 整除的整数为 [1,2,3,4,5] ,num1 = 这些整数之和 = 15 。\n- 范围 [1, 5] 内能够被 6 整除的整数为 [] ,num2 = 这些整数之和 = 0 。\n返回 15 - 0 = 15 作为答案。\n\n示例 3:\n\n输入:n = 5, m = 1\n输出:-15\n解释:在这个示例中:\n- 范围 [1, 5] 内无法被 1 整除的整数为 [] ,num1 = 这些整数之和 = 0 。\n- 范围 [1, 5] 内能够被 1 整除的整数为 [1,2,3,4,5] ,num2 = 这些整数之和 = 15 。\n返回 0 - 15 = -15 作为答案。\n\n\n提示:\n\n * 1 <= n, m <= 1000\n\"\"\"\nclass Solution:\n def differenceOfSums(self, n: int, m: int) -> int:\n ", "prompt_sft": "给你两个正整数 n 和 m 。\n\n现定义两个整数 num1 和 num2 ,如下所示:\n\n * num1:范围 [1, n] 内所有 无法被 m 整除 的整数之和。\n * num2:范围 [1, n] 内所有 能够被 m 整除 的整数之和。\n\n返回整数 num1 - num2 。\n\n示例 1:\n\n输入:n = 10, m = 3\n输出:19\n解释:在这个示例中:\n- 范围 [1, 10] 内无法被 3 整除的整数为 [1,2,4,5,7,8,10] ,num1 = 这些整数之和 = 37 。\n- 范围 [1, 10] 内能够被 3 整除的整数为 [3,6,9] ,num2 = 这些整数之和 = 18 。\n返回 37 - 18 = 19 作为答案。\n\n示例 2:\n\n输入:n = 5, m = 6\n输出:15\n解释:在这个示例中:\n- 范围 [1, 5] 内无法被 6 整除的整数为 [1,2,3,4,5] ,num1 = 这些整数之和 = 15 。\n- 范围 [1, 5] 内能够被 6 整除的整数为 [] ,num2 = 这些整数之和 = 0 。\n返回 15 - 0 = 15 作为答案。\n\n示例 3:\n\n输入:n = 5, m = 1\n输出:-15\n解释:在这个示例中:\n- 范围 [1, 5] 内无法被 1 整除的整数为 [] ,num1 = 这些整数之和 = 0 。\n- 范围 [1, 5] 内能够被 1 整除的整数为 [1,2,3,4,5] ,num2 = 这些整数之和 = 15 。\n返回 0 - 15 = -15 作为答案。\n\n\n提示:\n\n * 1 <= n, m <= 1000\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def differenceOfSums(self, n: int, m: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 10, \"m\": 3 }\nassert my_solution.differenceOfSums(**test_input) == 19\n\ntest_input = { \"n\": 5, \"m\": 6 }\nassert my_solution.differenceOfSums(**test_input) == 15\n\ntest_input = { \"n\": 5, \"m\": 1 }\nassert my_solution.differenceOfSums(**test_input) == -15\n\ntest_input = { \"n\": 15, \"m\": 9 }\nassert my_solution.differenceOfSums(**test_input) == 102\n\ntest_input = { \"n\": 8, \"m\": 10 }\nassert my_solution.differenceOfSums(**test_input) == 36\n\ntest_input = { \"n\": 23, \"m\": 36 }\nassert my_solution.differenceOfSums(**test_input) == 276\n\ntest_input = { \"n\": 1, \"m\": 32 }\nassert my_solution.differenceOfSums(**test_input) == 1\n\ntest_input = { \"n\": 36, \"m\": 7 }\nassert my_solution.dif
|
|||
|
{"task_id": "weekly-contest-366-minimum-processing-time", "url": "https://leetcode.com/problems/minimum-processing-time", "title": "minimum-processing-time", "meta": {"questionId": "3151", "questionFrontendId": "2895", "title": "Minimum Processing Time", "titleSlug": "minimum-processing-time", "isPaidOnly": false, "difficulty": "Medium", "likes": 119, "dislikes": 22, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n你有 n 颗处理器,每颗处理器都有 4 个核心。现有 n * 4 个待执行任务,每个核心只执行 一个 任务。\n\n给你一个下标从 0 开始的整数数组 processorTime ,表示每颗处理器最早空闲时间。另给你一个下标从 0 开始的整数数组 tasks ,表示执行每个任务所需的时间。返回所有任务都执行完毕需要的 最小时间 。\n\n注意:每个核心独立执行任务。\n\n示例 1:\n\n输入:processorTime = [8,10], tasks = [2,2,3,1,8,7,4,5]\n输出:16\n解释:\n最优的方案是将下标为 4, 5, 6, 7 的任务分配给第一颗处理器(最早空闲时间 time = 8),下标为 0, 1, 2, 3 的任务分配给第二颗处理器(最早空闲时间 time = 10)。\n第一颗处理器执行完所有任务需要花费的时间 = max(8 + 8, 8 + 7, 8 + 4, 8 + 5) = 16 。\n第二颗处理器执行完所有任务需要花费的时间 = max(10 + 2, 10 + 2, 10 + 3, 10 + 1) = 13 。\n因此,可以证明执行完所有任务需要花费的最小时间是 16 。\n\n示例 2:\n\n输入:processorTime = [10,20], tasks = [2,3,1,2,5,8,4,3]\n输出:23\n解释:\n最优的方案是将下标为 1, 4, 5, 6 的任务分配给第一颗处理器(最早空闲时间 time = 10),下标为 0, 2, 3, 7 的任务分配给第二颗处理器(最早空闲时间 time = 20)。\n第一颗处理器执行完所有任务需要花费的时间 = max(10 + 3, 10 + 5, 10 + 8, 10 + 4) = 18 。\n第二颗处理器执行完所有任务需要花费的时间 = max(20 + 2, 20 + 1, 20 + 2, 20 + 3) = 23 。\n因此,可以证明执行完所有任务需要花费的最小时间是 23 。\n\n\n提示:\n\n * 1 <= n == processorTime.length <= 25000\n * 1 <= tasks.length <= 105\n * 0 <= processorTime[i] <= 109\n * 1 <= tasks[i] <= 109\n * tasks.length == 4 * n\n\"\"\"\nclass Solution:\n def minProcessingTime(self, processorTime: List[int], tasks: List[int]) -> int:\n ", "prompt_sft": "你有 n 颗处理器,每颗处理器都有 4 个核心。现有 n * 4 个待执行任务,每个核心只执行 一个 任务。\n\n给你一个下标从 0 开始的整数数组 processorTime ,表示每颗处理器最早空闲时间。另给你一个下标从 0 开始的整数数组 tasks ,表示执行每个任务所需的时间。返回所有任务都执行完毕需要的 最小时间 。\n\n注意:每个核心独立执行任务。\n\n示例 1:\n\n输入:processorTime = [8,10], tasks = [2,2,3,1,8,7,4,5]\n输出:16\n解释:\n最优的方案是将下标为 4, 5, 6, 7 的任务分配给第一颗处理器(最早空闲时间 time = 8),下标为 0, 1, 2, 3 的任务分配给第二颗处理器(最早空闲时间 time = 10)。\n第一颗处理器执行完所有任务需要花费的时间 = max(8 + 8, 8 + 7, 8 + 4, 8 + 5) = 16 。\n第二颗处理器执行完所有任务需要花费的时间 = max(10 + 2, 10 + 2, 10 + 3, 10 + 1) = 13 。\n因此,可以证明执行完所有任务需要花费的最小时间是 16 。\n\n示例 2:\n\n输入:processorTime = [10,20], tasks = [2,3,1,2,5,8,4,3]\n输出:23\n解释:\n最优的方案是将下标为 1, 4, 5, 6 的任务分配给第一颗处理器(最早空闲时间 time = 10),下标为 0, 2, 3, 7 的任务分配给第二颗处理器(最早空闲时间 time = 20)。\n第一颗处理器执行完所有任务需要花费的时间 = max(10 + 3, 10 + 5, 10 + 8, 10 + 4) = 18 。\n第二颗处理器执行完所有任务需要花费的时间 = max(20 + 2, 20 + 1, 20 + 2, 20 + 3) = 23 。\n因此,可以证明执行完所有任务需要花费的最小时间是 23 。\n\n\n提示:\n\n * 1 <= n == pr
|
|||
|
{"task_id": "weekly-contest-366-apply-operations-to-make-two-strings-equal", "url": "https://leetcode.com/problems/apply-operations-to-make-two-strings-equal", "title": "apply-operations-to-make-two-strings-equal", "meta": {"questionId": "3033", "questionFrontendId": "2896", "title": "Apply Operations to Make Two Strings Equal", "titleSlug": "apply-operations-to-make-two-strings-equal", "isPaidOnly": false, "difficulty": "Medium", "likes": 291, "dislikes": 62, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的二进制字符串 s1 和 s2 ,两个字符串的长度都是 n ,再给你一个正整数 x 。\n\n你可以对字符串 s1 执行以下操作 任意次 :\n\n * 选择两个下标 i 和 j ,将 s1[i] 和 s1[j] 都反转,操作的代价为 x 。\n * 选择满足 i < n - 1 的下标 i ,反转 s1[i] 和 s1[i + 1] ,操作的代价为 1 。\n\n请你返回使字符串 s1 和 s2 相等的 最小 操作代价之和,如果无法让二者相等,返回 -1 。\n\n注意 ,反转字符的意思是将 0 变成 1 ,或者 1 变成 0 。\n\n示例 1:\n\n输入:s1 = \"1100011000\", s2 = \"0101001010\", x = 2\n输出:4\n解释:我们可以执行以下操作:\n- 选择 i = 3 执行第二个操作。结果字符串是 s1 = \"1101111000\" 。\n- 选择 i = 4 执行第二个操作。结果字符串是 s1 = \"1101001000\" 。\n- 选择 i = 0 和 j = 8 ,执行第一个操作。结果字符串是 s1 = \"0101001010\" = s2 。\n总代价是 1 + 1 + 2 = 4 。这是最小代价和。\n\n示例 2:\n\n输入:s1 = \"10110\", s2 = \"00011\", x = 4\n输出:-1\n解释:无法使两个字符串相等。\n\n\n提示:\n\n * n == s1.length == s2.length\n * 1 <= n, x <= 500\n * s1 和 s2 只包含字符 '0' 和 '1' 。\n\"\"\"\nclass Solution:\n def minOperations(self, s1: str, s2: str, x: int) -> int:\n ", "prompt_sft": "给你两个下标从 0 开始的二进制字符串 s1 和 s2 ,两个字符串的长度都是 n ,再给你一个正整数 x 。\n\n你可以对字符串 s1 执行以下操作 任意次 :\n\n * 选择两个下标 i 和 j ,将 s1[i] 和 s1[j] 都反转,操作的代价为 x 。\n * 选择满足 i < n - 1 的下标 i ,反转 s1[i] 和 s1[i + 1] ,操作的代价为 1 。\n\n请你返回使字符串 s1 和 s2 相等的 最小 操作代价之和,如果无法让二者相等,返回 -1 。\n\n注意 ,反转字符的意思是将 0 变成 1 ,或者 1 变成 0 。\n\n示例 1:\n\n输入:s1 = \"1100011000\", s2 = \"0101001010\", x = 2\n输出:4\n解释:我们可以执行以下操作:\n- 选择 i = 3 执行第二个操作。结果字符串是 s1 = \"1101111000\" 。\n- 选择 i = 4 执行第二个操作。结果字符串是 s1 = \"1101001000\" 。\n- 选择 i = 0 和 j = 8 ,执行第一个操作。结果字符串是 s1 = \"0101001010\" = s2 。\n总代价是 1 + 1 + 2 = 4 。这是最小代价和。\n\n示例 2:\n\n输入:s1 = \"10110\", s2 = \"00011\", x = 4\n输出:-1\n解释:无法使两个字符串相等。\n\n\n提示:\n\n * n == s1.length == s2.length\n * 1 <= n, x <= 500\n * s1 和 s2 只包含字符 '0' 和 '1' 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minOperations(self, s1: str, s2: str, x: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s1\": \"1100011000\", \"s2\": \"0101001010\", \"x\": 2 }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"s1\": \"10110\", \"s2\": \"00011\", \"x\": 4 }\nassert my_solution.minOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"101101\", \"s2\": \"000000\", \"x\": 6 }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"s1\": \"0\", \"s2\": \"1\", \"x\": 2 }\nassert my_solution.minOperations(**test_input) == -1\n\ntest_input = { \"s1\": \"1011100100111000\", \"s2\": \"1001010001011100\", \"x\": 19 }\nassert my_solution.minOperations(**test_input) == -1\n\
|
|||
|
{"task_id": "weekly-contest-366-apply-operations-on-array-to-maximize-sum-of-squares", "url": "https://leetcode.com/problems/apply-operations-on-array-to-maximize-sum-of-squares", "title": "apply-operations-on-array-to-maximize-sum-of-squares", "meta": {"questionId": "3153", "questionFrontendId": "2897", "title": "Apply Operations on Array to Maximize Sum of Squares", "titleSlug": "apply-operations-on-array-to-maximize-sum-of-squares", "isPaidOnly": false, "difficulty": "Hard", "likes": 159, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个 正 整数 k 。\n\n你可以对数组执行以下操作 任意次 :\n\n * 选择两个互不相同的下标 i 和 j ,同时 将 nums[i] 更新为 (nums[i] AND nums[j]) 且将 nums[j] 更新为 (nums[i] OR nums[j]) ,OR 表示按位 或 运算,AND 表示按位 与 运算。\n\n你需要从最终的数组里选择 k 个元素,并计算它们的 平方 之和。\n\n请你返回你可以得到的 最大 平方和。\n\n由于答案可能会很大,将答案对 109 + 7 取余 后返回。\n\n示例 1:\n\n输入:nums = [2,6,5,8], k = 2\n输出:261\n解释:我们可以对数组执行以下操作:\n- 选择 i = 0 和 j = 3 ,同时将 nums[0] 变为 (2 AND 8) = 0 且 nums[3] 变为 (2 OR 8) = 10 ,结果数组为 nums = [0,6,5,10] 。\n- 选择 i = 2 和 j = 3 ,同时将 nums[2] 变为 (5 AND 10) = 0 且 nums[3] 变为 (5 OR 10) = 15 ,结果数组为 nums = [0,6,0,15] 。\n从最终数组里选择元素 15 和 6 ,平方和为 152 + 62 = 261 。\n261 是可以得到的最大结果。\n\n示例 2:\n\n输入:nums = [4,5,4,7], k = 3\n输出:90\n解释:不需要执行任何操作。\n选择元素 7 ,5 和 4 ,平方和为 72 + 52 + 42 = 90 。\n90 是可以得到的最大结果。\n\n\n提示:\n\n * 1 <= k <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def maxSum(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个 正 整数 k 。\n\n你可以对数组执行以下操作 任意次 :\n\n * 选择两个互不相同的下标 i 和 j ,同时 将 nums[i] 更新为 (nums[i] AND nums[j]) 且将 nums[j] 更新为 (nums[i] OR nums[j]) ,OR 表示按位 或 运算,AND 表示按位 与 运算。\n\n你需要从最终的数组里选择 k 个元素,并计算它们的 平方 之和。\n\n请你返回你可以得到的 最大 平方和。\n\n由于答案可能会很大,将答案对 109 + 7 取余 后返回。\n\n示例 1:\n\n输入:nums = [2,6,5,8], k = 2\n输出:261\n解释:我们可以对数组执行以下操作:\n- 选择 i = 0 和 j = 3 ,同时将 nums[0] 变为 (2 AND 8) = 0 且 nums[3] 变为 (2 OR 8) = 10 ,结果数组为 nums = [0,6,5,10] 。\n- 选择 i = 2 和 j = 3 ,同时将 nums[2] 变为 (5 AND 10) = 0 且 nums[3] 变为 (5 OR 10) = 15 ,结果数组为 nums = [0,6,0,15] 。\n从最终数组里选择元素 15 和 6 ,平方和为 152 + 62 = 261 。\n261 是可以得到的最大结果。\n\n示例 2:\n\n输入:nums = [4,5,4,7], k = 3\n输出:90\n解释:不需要执行任何操作。\n选择元素 7 ,5 和 4 ,平方和为 72 + 52 + 42 = 90 。\n90 是可以得到的最大结果。\n\n\n提示:\n\n * 1 <= k <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxSum(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,6,5,8], \"k\": 2 }\nassert my_solution.maxSum(**test_input) == 261\n\ntest_input = { \"nums\": [4,5,4,7], \"k\": 3 }\nassert my_solution.maxSum(**test_input) == 90\n\ntest_input = { \"nums\": [32,85,61], \"k\": 1 }\nassert my_solution.maxSum(**test_input) == 15625\n\ntest_input = { \"nums\": [123], \"k\": 1 }\nassert my_solution.maxSum(**test_input) == 15129\n\ntest_input = { \"nums\": [96,66,60,58,32,17,63,21,30,44,15,8
|
|||
|
{"task_id": "weekly-contest-365-maximum-value-of-an-ordered-triplet-i", "url": "https://leetcode.com/problems/maximum-value-of-an-ordered-triplet-i", "title": "maximum-value-of-an-ordered-triplet-i", "meta": {"questionId": "3154", "questionFrontendId": "2873", "title": "Maximum Value of an Ordered Triplet I", "titleSlug": "maximum-value-of-an-ordered-triplet-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 130, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。\n\n下标三元组 (i, j, k) 的值等于 (nums[i] - nums[j]) * nums[k] 。\n\n示例 1:\n\n输入:nums = [12,6,1,2,7]\n输出:77\n解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77 。\n可以证明不存在值大于 77 的有序下标三元组。\n\n示例 2:\n\n输入:nums = [1,10,3,4,19]\n输出:133\n解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133 。\n可以证明不存在值大于 133 的有序下标三元组。\n\n示例 3:\n\n输入:nums = [1,2,3]\n输出:0\n解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3 。因此,答案是 0 。\n\n\n提示:\n\n * 3 <= nums.length <= 100\n * 1 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def maximumTripletValue(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。\n\n下标三元组 (i, j, k) 的值等于 (nums[i] - nums[j]) * nums[k] 。\n\n示例 1:\n\n输入:nums = [12,6,1,2,7]\n输出:77\n解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77 。\n可以证明不存在值大于 77 的有序下标三元组。\n\n示例 2:\n\n输入:nums = [1,10,3,4,19]\n输出:133\n解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133 。\n可以证明不存在值大于 133 的有序下标三元组。\n\n示例 3:\n\n输入:nums = [1,2,3]\n输出:0\n解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3 。因此,答案是 0 。\n\n\n提示:\n\n * 3 <= nums.length <= 100\n * 1 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumTripletValue(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [12,6,1,2,7] }\nassert my_solution.maximumTripletValue(**test_input) == 77\n\ntest_input = { \"nums\": [1,10,3,4,19] }\nassert my_solution.maximumTripletValue(**test_input) == 133\n\ntest_input = { \"nums\": [1,2,3] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [2,3,1] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [5,7,8,4] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [1000000,1,1000000] }\nassert my_solution.maximumTripletValue(**test_input) == 999999000000\n\ntest_input = { \"nums\": [18,15,8,13,10,9,17,10,2,16,17] }\nassert my_solution.maximumTripletValue(**test_input) == 272\n\ntest_input = { \"nums\": [8,6,3,13,2,12,19,5,19,6,10,11,9] }\nassert my_solution.maximumTripletValue(**test_input) == 266\n\ntest_input = { \"nums\": [6,11,12,12,7,9,2,11,12,4,19,14,16,8,16] }\nassert my_solution.maximumTripletValue(**test_input) == 190\n\ntest_input = { \"nums\": [15,14,17,13,18,17,10,19,2,20,12,9] }\nassert my_solution.maximumTripletValue(**test_input) == 340\n\ntest_input = { \"nums\": [6,14,20,19,19,10,3,15,12,13,8,1,2,15,3] }\nassert my_solution.maximumTripletValue(**test_input) == 285\n\ntest_input = { \"nums\": [2,7,19,4,8,20] }\nasse
|
|||
|
{"task_id": "weekly-contest-365-maximum-value-of-an-ordered-triplet-ii", "url": "https://leetcode.com/problems/maximum-value-of-an-ordered-triplet-ii", "title": "maximum-value-of-an-ordered-triplet-ii", "meta": {"questionId": "3152", "questionFrontendId": "2874", "title": "Maximum Value of an Ordered Triplet II", "titleSlug": "maximum-value-of-an-ordered-triplet-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 238, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。\n\n请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。\n\n下标三元组 (i, j, k) 的值等于 (nums[i] - nums[j]) * nums[k] 。\n\n示例 1:\n\n输入:nums = [12,6,1,2,7]\n输出:77\n解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77 。\n可以证明不存在值大于 77 的有序下标三元组。\n\n示例 2:\n\n输入:nums = [1,10,3,4,19]\n输出:133\n解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133 。\n可以证明不存在值大于 133 的有序下标三元组。\n\n示例 3:\n\n输入:nums = [1,2,3]\n输出:0\n解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3 。因此,答案是 0 。\n\n\n提示:\n\n * 3 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def maximumTripletValue(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。\n\n请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。\n\n下标三元组 (i, j, k) 的值等于 (nums[i] - nums[j]) * nums[k] 。\n\n示例 1:\n\n输入:nums = [12,6,1,2,7]\n输出:77\n解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77 。\n可以证明不存在值大于 77 的有序下标三元组。\n\n示例 2:\n\n输入:nums = [1,10,3,4,19]\n输出:133\n解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133 。\n可以证明不存在值大于 133 的有序下标三元组。\n\n示例 3:\n\n输入:nums = [1,2,3]\n输出:0\n解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3 。因此,答案是 0 。\n\n\n提示:\n\n * 3 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumTripletValue(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [12,6,1,2,7] }\nassert my_solution.maximumTripletValue(**test_input) == 77\n\ntest_input = { \"nums\": [1,10,3,4,19] }\nassert my_solution.maximumTripletValue(**test_input) == 133\n\ntest_input = { \"nums\": [1,2,3] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [2,3,1] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [5,7,8,4] }\nassert my_solution.maximumTripletValue(**test_input) == 0\n\ntest_input = { \"nums\": [1000000,1,1000000] }\nassert my_solution.maximumTripletValue(**test_input) == 999999000000\n\ntest_input = { \"nums\": [18,15,8,13,10,9,17,10,2,16,17] }\nassert my_solution.maximumTripletValue(**test_input) == 272\n\ntest_input = { \"nums\": [8,6,3,13,2,12,19,5,19,6,10,11,9] }\nassert my_solution.maximumTripletValue(**test_input) == 266\n\ntest_input = { \"nums\": [6,11,12,12,7,9,2,11,12,4,19,14,16,8,16] }\nassert my_solution.maximumTripletValue(**test_input) == 190\n\ntest_input = { \"nums\": [15,14,17,13,18,17,10,19,2,20,12,9] }\nassert my_solution.maximumTripletValue(**test_input) == 340\n\ntest_input = { \"nums\": [6,14,20,19,19,10,3,15,12,13,8,1,2,15,3] }\nassert my_solution.maximumTripletValue(**test_input) == 285\n\ntest_input = { \"nums\": [2,7,19,4,8,20] }
|
|||
|
{"task_id": "weekly-contest-365-minimum-size-subarray-in-infinite-array", "url": "https://leetcode.com/problems/minimum-size-subarray-in-infinite-array", "title": "minimum-size-subarray-in-infinite-array", "meta": {"questionId": "3141", "questionFrontendId": "2875", "title": "Minimum Size Subarray in Infinite Array", "titleSlug": "minimum-size-subarray-in-infinite-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 309, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的数组 nums 和一个整数 target 。\n\n下标从 0 开始的数组 infinite_nums 是通过无限地将 nums 的元素追加到自己之后生成的。\n\n请你从 infinite_nums 中找出满足 元素和 等于 target 的 最短 子数组,并返回该子数组的长度。如果不存在满足条件的子数组,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,2,3], target = 5\n输出:2\n解释:在这个例子中 infinite_nums = [1,2,3,1,2,3,1,2,...] 。\n区间 [1,2] 内的子数组的元素和等于 target = 5 ,且长度 length = 2 。\n可以证明,当元素和等于目标值 target = 5 时,2 是子数组的最短长度。\n\n示例 2:\n\n输入:nums = [1,1,1,2,3], target = 4\n输出:2\n解释:在这个例子中 infinite_nums = [1,1,1,2,3,1,1,1,2,3,1,1,...].\n区间 [4,5] 内的子数组的元素和等于 target = 4 ,且长度 length = 2 。\n可以证明,当元素和等于目标值 target = 4 时,2 是子数组的最短长度。\n\n示例 3:\n\n输入:nums = [2,4,6,8], target = 3\n输出:-1\n解释:在这个例子中 infinite_nums = [2,4,6,8,2,4,6,8,...] 。\n可以证明,不存在元素和等于目标值 target = 3 的子数组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 105\n * 1 <= target <= 109\n\"\"\"\nclass Solution:\n def minSizeSubarray(self, nums: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的数组 nums 和一个整数 target 。\n\n下标从 0 开始的数组 infinite_nums 是通过无限地将 nums 的元素追加到自己之后生成的。\n\n请你从 infinite_nums 中找出满足 元素和 等于 target 的 最短 子数组,并返回该子数组的长度。如果不存在满足条件的子数组,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,2,3], target = 5\n输出:2\n解释:在这个例子中 infinite_nums = [1,2,3,1,2,3,1,2,...] 。\n区间 [1,2] 内的子数组的元素和等于 target = 5 ,且长度 length = 2 。\n可以证明,当元素和等于目标值 target = 5 时,2 是子数组的最短长度。\n\n示例 2:\n\n输入:nums = [1,1,1,2,3], target = 4\n输出:2\n解释:在这个例子中 infinite_nums = [1,1,1,2,3,1,1,1,2,3,1,1,...].\n区间 [4,5] 内的子数组的元素和等于 target = 4 ,且长度 length = 2 。\n可以证明,当元素和等于目标值 target = 4 时,2 是子数组的最短长度。\n\n示例 3:\n\n输入:nums = [2,4,6,8], target = 3\n输出:-1\n解释:在这个例子中 infinite_nums = [2,4,6,8,2,4,6,8,...] 。\n可以证明,不存在元素和等于目标值 target = 3 的子数组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 105\n * 1 <= target <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minSizeSubarray(self, nums: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3], \"target\": 5 }\nassert my_solution.minSizeSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [1,1,1,2,3], \"target\": 4 }\nassert my_solution.minSizeSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [2,4,6,8], \"target\": 3 }\nassert my_solution.minSizeSubarray(**test_input) == -1\n\ntest_input = { \"nums\": [2,1,5,7,7,1,6,3], \"target\": 39 }\nassert my_solution.minSizeSubarray(**test_input) == 9\n\ntest_input = { \"nums\": [17,4,3,14,17,6,15], \"target\": 85 }\nassert my_solution.minSizeSubarray(**test_input) == -1\n\ntest_input = { \"nums\": [18,3,11,19,7,16,6,7,3,6,18,9
|
|||
|
{"task_id": "weekly-contest-365-count-visited-nodes-in-a-directed-graph", "url": "https://leetcode.com/problems/count-visited-nodes-in-a-directed-graph", "title": "count-visited-nodes-in-a-directed-graph", "meta": {"questionId": "3140", "questionFrontendId": "2876", "title": "Count Visited Nodes in a Directed Graph", "titleSlug": "count-visited-nodes-in-a-directed-graph", "isPaidOnly": false, "difficulty": "Hard", "likes": 274, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。\n\n给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。\n\n想象在图上发生以下过程:\n\n * 你从节点 x 开始,通过边访问其他节点,直到你在 此过程 中再次访问到之前已经访问过的节点。\n\n返回数组 answer 作为答案,其中 answer[i] 表示如果从节点 i 开始执行该过程,你可以访问到的不同节点数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/31/graaphdrawio-1.png]\n\n输入:edges = [1,2,0,0]\n输出:[3,3,3,4]\n解释:从每个节点开始执行该过程,记录如下:\n- 从节点 0 开始,访问节点 0 -> 1 -> 2 -> 0 。访问的不同节点数是 3 。\n- 从节点 1 开始,访问节点 1 -> 2 -> 0 -> 1 。访问的不同节点数是 3 。\n- 从节点 2 开始,访问节点 2 -> 0 -> 1 -> 2 。访问的不同节点数是 3 。\n- 从节点 3 开始,访问节点 3 -> 0 -> 1 -> 2 -> 0 。访问的不同节点数是 4 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/31/graaph2drawio.png]\n\n输入:edges = [1,2,3,4,0]\n输出:[5,5,5,5,5]\n解释:无论从哪个节点开始,在这个过程中,都可以访问到图中的每一个节点。\n\n\n提示:\n\n * n == edges.length\n * 2 <= n <= 105\n * 0 <= edges[i] <= n - 1\n * edges[i] != i\n\"\"\"\nclass Solution:\n def countVisitedNodes(self, edges: List[int]) -> List[int]:\n ", "prompt_sft": "现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。\n\n给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。\n\n想象在图上发生以下过程:\n\n * 你从节点 x 开始,通过边访问其他节点,直到你在 此过程 中再次访问到之前已经访问过的节点。\n\n返回数组 answer 作为答案,其中 answer[i] 表示如果从节点 i 开始执行该过程,你可以访问到的不同节点数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/31/graaphdrawio-1.png]\n\n输入:edges = [1,2,0,0]\n输出:[3,3,3,4]\n解释:从每个节点开始执行该过程,记录如下:\n- 从节点 0 开始,访问节点 0 -> 1 -> 2 -> 0 。访问的不同节点数是 3 。\n- 从节点 1 开始,访问节点 1 -> 2 -> 0 -> 1 。访问的不同节点数是 3 。\n- 从节点 2 开始,访问节点 2 -> 0 -> 1 -> 2 。访问的不同节点数是 3 。\n- 从节点 3 开始,访问节点 3 -> 0 -> 1 -> 2 -> 0 。访问的不同节点数是 4 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/31/graaph2drawio.png]\n\n输入:edges = [1,2,3,4,0]\n输出:[5,5,5,5,5]\n解释:无论从哪个节点开始,在这个过程中,都可以访问到图中的每一个节点。\n\n\n提示:\n\n * n == edges.length\n * 2 <= n <= 105\n * 0 <= edges[i] <= n - 1\n * edges[i] != i\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countVisitedNodes(self, edges: List[int]) -> List[int]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"edges\": [1,2,0,0] }\nassert my_solution.countVisitedNodes(**test_input) == [3,3,3,4]\n\ntest_input = { \"edges\": [1,2,3,4,0] }\nassert my_solution.countVisitedNodes(**test_input) == [5,5,5,5,5]\n\ntest_input = { \"edges\": [3,6,1,0,5,7,4,3] }\nassert my_solution.countVisitedNod
|
|||
|
{"task_id": "biweekly-contest-114-minimum-operations-to-collect-elements", "url": "https://leetcode.com/problems/minimum-operations-to-collect-elements", "title": "minimum-operations-to-collect-elements", "meta": {"questionId": "3044", "questionFrontendId": "2869", "title": "Minimum Operations to Collect Elements", "titleSlug": "minimum-operations-to-collect-elements", "isPaidOnly": false, "difficulty": "Easy", "likes": 130, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个正整数数组 nums 和一个整数 k 。\n\n一次操作中,你可以将数组的最后一个元素删除,将该元素添加到一个集合中。\n\n请你返回收集元素 1, 2, ..., k 需要的 最少操作次数 。\n\n示例 1:\n\n输入:nums = [3,1,5,4,2], k = 2\n输出:4\n解释:4 次操作后,集合中的元素依次添加了 2 ,4 ,5 和 1 。此时集合中包含元素 1 和 2 ,所以答案为 4 。\n\n示例 2:\n\n输入:nums = [3,1,5,4,2], k = 5\n输出:5\n解释:5 次操作后,集合中的元素依次添加了 2 ,4 ,5 ,1 和 3 。此时集合中包含元素 1 到 5 ,所以答案为 5 。\n\n示例 3:\n\n输入:nums = [3,2,5,3,1], k = 3\n输出:4\n解释:4 次操作后,集合中的元素依次添加了 1 ,3 ,5 和 2 。此时集合中包含元素 1 到 3 ,所以答案为 4 。\n\n\n提示:\n\n * 1 <= nums.length <= 50\n * 1 <= nums[i] <= nums.length\n * 1 <= k <= nums.length\n * 输入保证你可以收集到元素 1, 2, ..., k 。\n\"\"\"\nclass Solution:\n def minOperations(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个正整数数组 nums 和一个整数 k 。\n\n一次操作中,你可以将数组的最后一个元素删除,将该元素添加到一个集合中。\n\n请你返回收集元素 1, 2, ..., k 需要的 最少操作次数 。\n\n示例 1:\n\n输入:nums = [3,1,5,4,2], k = 2\n输出:4\n解释:4 次操作后,集合中的元素依次添加了 2 ,4 ,5 和 1 。此时集合中包含元素 1 和 2 ,所以答案为 4 。\n\n示例 2:\n\n输入:nums = [3,1,5,4,2], k = 5\n输出:5\n解释:5 次操作后,集合中的元素依次添加了 2 ,4 ,5 ,1 和 3 。此时集合中包含元素 1 到 5 ,所以答案为 5 。\n\n示例 3:\n\n输入:nums = [3,2,5,3,1], k = 3\n输出:4\n解释:4 次操作后,集合中的元素依次添加了 1 ,3 ,5 和 2 。此时集合中包含元素 1 到 3 ,所以答案为 4 。\n\n\n提示:\n\n * 1 <= nums.length <= 50\n * 1 <= nums[i] <= nums.length\n * 1 <= k <= nums.length\n * 输入保证你可以收集到元素 1, 2, ..., k 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minOperations(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [3,1,5,4,2], \"k\": 2 }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"nums\": [3,1,5,4,2], \"k\": 5 }\nassert my_solution.minOperations(**test_input) == 5\n\ntest_input = { \"nums\": [3,2,5,3,1], \"k\": 3 }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"nums\": [1], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [1,1], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [1,2], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [1,2], \"k\": 2 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [2,1], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [2,1], \"k\": 2 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [1,1,1], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [1,1,2], \"k\": 1 }\nassert my_solution.minOperations(**test_input) == 2\n\ntest_input = { \"nums\": [1,1,2], \"k\": 2 }\nassert my_solution.minOperations(**test_input) == 2\n\ntes
|
|||
|
{"task_id": "biweekly-contest-114-minimum-number-of-operations-to-make-array-empty", "url": "https://leetcode.com/problems/minimum-number-of-operations-to-make-array-empty", "title": "minimum-number-of-operations-to-make-array-empty", "meta": {"questionId": "3094", "questionFrontendId": "2870", "title": "Minimum Number of Operations to Make Array Empty", "titleSlug": "minimum-number-of-operations-to-make-array-empty", "isPaidOnly": false, "difficulty": "Medium", "likes": 147, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的正整数数组 nums 。\n\n你可以对数组执行以下两种操作 任意次 :\n\n * 从数组中选择 两个 值 相等 的元素,并将它们从数组中 删除 。\n * 从数组中选择 三个 值 相等 的元素,并将它们从数组中 删除 。\n\n请你返回使数组为空的 最少 操作次数,如果无法达成,请返回 -1 。\n\n示例 1:\n\n输入:nums = [2,3,3,2,2,4,2,3,4]\n输出:4\n解释:我们可以执行以下操作使数组为空:\n- 对下标为 0 和 3 的元素执行第一种操作,得到 nums = [3,3,2,4,2,3,4] 。\n- 对下标为 2 和 4 的元素执行第一种操作,得到 nums = [3,3,4,3,4] 。\n- 对下标为 0 ,1 和 3 的元素执行第二种操作,得到 nums = [4,4] 。\n- 对下标为 0 和 1 的元素执行第一种操作,得到 nums = [] 。\n至少需要 4 步操作使数组为空。\n\n示例 2:\n\n输入:nums = [2,1,2,2,3,3]\n输出:-1\n解释:无法使数组为空。\n\n\n提示:\n\n * 2 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def minOperations(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的正整数数组 nums 。\n\n你可以对数组执行以下两种操作 任意次 :\n\n * 从数组中选择 两个 值 相等 的元素,并将它们从数组中 删除 。\n * 从数组中选择 三个 值 相等 的元素,并将它们从数组中 删除 。\n\n请你返回使数组为空的 最少 操作次数,如果无法达成,请返回 -1 。\n\n示例 1:\n\n输入:nums = [2,3,3,2,2,4,2,3,4]\n输出:4\n解释:我们可以执行以下操作使数组为空:\n- 对下标为 0 和 3 的元素执行第一种操作,得到 nums = [3,3,2,4,2,3,4] 。\n- 对下标为 2 和 4 的元素执行第一种操作,得到 nums = [3,3,4,3,4] 。\n- 对下标为 0 ,1 和 3 的元素执行第二种操作,得到 nums = [4,4] 。\n- 对下标为 0 和 1 的元素执行第一种操作,得到 nums = [] 。\n至少需要 4 步操作使数组为空。\n\n示例 2:\n\n输入:nums = [2,1,2,2,3,3]\n输出:-1\n解释:无法使数组为空。\n\n\n提示:\n\n * 2 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minOperations(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,3,3,2,2,4,2,3,4] }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"nums\": [2,1,2,2,3,3] }\nassert my_solution.minOperations(**test_input) == -1\n\ntest_input = { \"nums\": [3,3] }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [14,12,14,14,12,14,14,12,12,12,12,14,14,12,14,14,14,12,12] }\nassert my_solution.minOperations(**test_input) == 7\n\ntest_input = { \"nums\": [2,2,2,2,2,2,2,2,2] }\nassert my_solution.minOperations(**test_input) == 3\n\ntest_input = { \"nums\": [15,3,3,15,15,13,8,15,6,15,3,1,8,8,15] }\nassert my_solution.minOperations(**test_input) == -1\n\ntest_input = { \"nums\": [19,19,19,19,19,19,19,19,19,19,19,19,19] }\nassert my_solution.minOperations(**test_input) == 5\n\ntest_input = { \"nums\": [13,7,13,7,13,7,13,13,7] }\nassert my_solution.minOperations(**test_input) == 4\n\ntest_input = { \"nums\": [5,5] }\nassert my_solution.minOperations(**test_input) == 1\n\ntest_input = { \"nums\": [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3] }\nassert my_solution.minOperations(**test_input) == 5\n
|
|||
|
{"task_id": "biweekly-contest-114-split-array-into-maximum-number-of-subarrays", "url": "https://leetcode.com/problems/split-array-into-maximum-number-of-subarrays", "title": "split-array-into-maximum-number-of-subarrays", "meta": {"questionId": "3080", "questionFrontendId": "2871", "title": "Split Array Into Maximum Number of Subarrays", "titleSlug": "split-array-into-maximum-number-of-subarrays", "isPaidOnly": false, "difficulty": "Medium", "likes": 188, "dislikes": 24, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个只包含 非负 整数的数组 nums 。\n\n我们定义满足 l <= r 的子数组 nums[l..r] 的分数为 nums[l] AND nums[l + 1] AND ... AND nums[r] ,其中 AND 是按位与运算。\n\n请你将数组分割成一个或者更多子数组,满足:\n\n * 每个 元素都 只 属于一个子数组。\n * 子数组分数之和尽可能 小 。\n\n请你在满足以上要求的条件下,返回 最多 可以得到多少个子数组。\n\n一个 子数组 是一个数组中一段连续的元素。\n\n示例 1:\n\n输入:nums = [1,0,2,0,1,2]\n输出:3\n解释:我们可以将数组分割成以下子数组:\n- [1,0] 。子数组分数为 1 AND 0 = 0 。\n- [2,0] 。子数组分数为 2 AND 0 = 0 。\n- [1,2] 。子数组分数为 1 AND 2 = 0 。\n分数之和为 0 + 0 + 0 = 0 ,是我们可以得到的最小分数之和。\n在分数之和为 0 的前提下,最多可以将数组分割成 3 个子数组。所以返回 3 。\n\n示例 2:\n\n输入:nums = [5,7,1,3]\n输出:1\n解释:我们可以将数组分割成一个子数组:[5,7,1,3] ,分数为 1 ,这是可以得到的最小总分数。\n在总分数为 1 的前提下,最多可以将数组分割成 1 个子数组。所以返回 1 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def maxSubarrays(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个只包含 非负 整数的数组 nums 。\n\n我们定义满足 l <= r 的子数组 nums[l..r] 的分数为 nums[l] AND nums[l + 1] AND ... AND nums[r] ,其中 AND 是按位与运算。\n\n请你将数组分割成一个或者更多子数组,满足:\n\n * 每个 元素都 只 属于一个子数组。\n * 子数组分数之和尽可能 小 。\n\n请你在满足以上要求的条件下,返回 最多 可以得到多少个子数组。\n\n一个 子数组 是一个数组中一段连续的元素。\n\n示例 1:\n\n输入:nums = [1,0,2,0,1,2]\n输出:3\n解释:我们可以将数组分割成以下子数组:\n- [1,0] 。子数组分数为 1 AND 0 = 0 。\n- [2,0] 。子数组分数为 2 AND 0 = 0 。\n- [1,2] 。子数组分数为 1 AND 2 = 0 。\n分数之和为 0 + 0 + 0 = 0 ,是我们可以得到的最小分数之和。\n在分数之和为 0 的前提下,最多可以将数组分割成 3 个子数组。所以返回 3 。\n\n示例 2:\n\n输入:nums = [5,7,1,3]\n输出:1\n解释:我们可以将数组分割成一个子数组:[5,7,1,3] ,分数为 1 ,这是可以得到的最小总分数。\n在总分数为 1 的前提下,最多可以将数组分割成 1 个子数组。所以返回 1 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxSubarrays(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,0,2,0,1,2] }\nassert my_solution.maxSubarrays(**test_input) == 3\n\ntest_input = { \"nums\": [5,7,1,3] }\nassert my_solution.maxSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [1,0,2,1] }\nassert my_solution.maxSubarrays(**test_input) == 2\n\ntest_input = { \"nums\": [0] }\nassert my_solution.maxSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [0,0] }\nassert my_solution.maxSubarrays(**test_input) == 2\n\ntest_input = { \"nums\": [100000] }\nassert my_solution.maxSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [1,2,2,1] }\nassert my_solution.maxSubarr
|
|||
|
{"task_id": "biweekly-contest-114-maximum-number-of-k-divisible-components", "url": "https://leetcode.com/problems/maximum-number-of-k-divisible-components", "title": "maximum-number-of-k-divisible-components", "meta": {"questionId": "3058", "questionFrontendId": "2872", "title": "Maximum Number of K-Divisible Components", "titleSlug": "maximum-number-of-k-divisible-components", "isPaidOnly": false, "difficulty": "Hard", "likes": 170, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一棵 n 个节点的无向树,节点编号为 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边。\n\n同时给你一个下标从 0 开始长度为 n 的整数数组 values ,其中 values[i] 是第 i 个节点的 值 。再给你一个整数 k 。\n\n你可以从树中删除一些边,也可以一条边也不删,得到若干连通块。一个 连通块的值 定义为连通块中所有节点值之和。如果所有连通块的值都可以被 k 整除,那么我们说这是一个 合法分割 。\n\n请你返回所有合法分割中,连通块数目的最大值 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/07/example12-cropped2svg.jpg]\n\n输入:n = 5, edges = [[0,2],[1,2],[1,3],[2,4]], values = [1,8,1,4,4], k = 6\n输出:2\n解释:我们删除节点 1 和 2 之间的边。这是一个合法分割,因为:\n- 节点 1 和 3 所在连通块的值为 values[1] + values[3] = 12 。\n- 节点 0 ,2 和 4 所在连通块的值为 values[0] + values[2] + values[4] = 6 。\n最多可以得到 2 个连通块的合法分割。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/07/example21svg-1.jpg]\n\n输入:n = 7, edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]], values = [3,0,6,1,5,2,1], k = 3\n输出:3\n解释:我们删除节点 0 和 2 ,以及节点 0 和 1 之间的边。这是一个合法分割,因为:\n- 节点 0 的连通块的值为 values[0] = 3 。\n- 节点 2 ,5 和 6 所在连通块的值为 values[2] + values[5] + values[6] = 9 。\n- 节点 1 ,3 和 4 的连通块的值为 values[1] + values[3] + values[4] = 6 。\n最多可以得到 3 个连通块的合法分割。\n\n\n提示:\n\n * 1 <= n <= 3 * 104\n * edges.length == n - 1\n * edges[i].length == 2\n * 0 <= ai, bi < n\n * values.length == n\n * 0 <= values[i] <= 109\n * 1 <= k <= 109\n * values 之和可以被 k 整除。\n * 输入保证 edges 是一棵无向树。\n\"\"\"\nclass Solution:\n def maxKDivisibleComponents(self, n: int, edges: List[List[int]], values: List[int], k: int) -> int:\n ", "prompt_sft": "给你一棵 n 个节点的无向树,节点编号为 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边。\n\n同时给你一个下标从 0 开始长度为 n 的整数数组 values ,其中 values[i] 是第 i 个节点的 值 。再给你一个整数 k 。\n\n你可以从树中删除一些边,也可以一条边也不删,得到若干连通块。一个 连通块的值 定义为连通块中所有节点值之和。如果所有连通块的值都可以被 k 整除,那么我们说这是一个 合法分割 。\n\n请你返回所有合法分割中,连通块数目的最大值 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/07/example12-cropped2svg.jpg]\n\n输入:n = 5, edges = [[0,2],[1,2],[1,3],[2,4]], values = [1,8,1,4,4], k = 6\n输出:2\n解释:我们删除节点 1 和 2 之间的边。这是一个合法分割,因为:\n- 节点 1 和 3 所在连通块的值为 values[1] + values[3] = 12 。\n- 节点 0 ,2 和 4 所在连通块的值为 values[0] + values[2] + values[4] = 6 。\n最多可以得到 2 个连通块的合法分割。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/07/example21svg-1.jpg]\n\n输入:n = 7, edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]]
|
|||
|
{"task_id": "weekly-contest-364-maximum-odd-binary-number", "url": "https://leetcode.com/problems/maximum-odd-binary-number", "title": "maximum-odd-binary-number", "meta": {"questionId": "3055", "questionFrontendId": "2864", "title": "Maximum Odd Binary Number", "titleSlug": "maximum-odd-binary-number", "isPaidOnly": false, "difficulty": "Easy", "likes": 149, "dislikes": 1, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个 二进制 字符串 s ,其中至少包含一个 '1' 。\n\n你必须按某种方式 重新排列 字符串中的位,使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。\n\n以字符串形式,表示并返回可以由给定组合生成的最大二进制奇数。\n\n注意 返回的结果字符串 可以 含前导零。\n\n示例 1:\n\n输入:s = \"010\"\n输出:\"001\"\n解释:因为字符串 s 中仅有一个 '1' ,其必须出现在最后一位上。所以答案是 \"001\" 。\n\n示例 2:\n\n输入:s = \"0101\"\n输出:\"1001\"\n解释:其中一个 '1' 必须出现在最后一位上。而由剩下的数字可以生产的最大数字是 \"100\" 。所以答案是 \"1001\" 。\n\n\n提示:\n\n * 1 <= s.length <= 100\n * s 仅由 '0' 和 '1' 组成\n * s 中至少包含一个 '1'\n\"\"\"\nclass Solution:\n def maximumOddBinaryNumber(self, s: str) -> str:\n ", "prompt_sft": "给你一个 二进制 字符串 s ,其中至少包含一个 '1' 。\n\n你必须按某种方式 重新排列 字符串中的位,使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。\n\n以字符串形式,表示并返回可以由给定组合生成的最大二进制奇数。\n\n注意 返回的结果字符串 可以 含前导零。\n\n示例 1:\n\n输入:s = \"010\"\n输出:\"001\"\n解释:因为字符串 s 中仅有一个 '1' ,其必须出现在最后一位上。所以答案是 \"001\" 。\n\n示例 2:\n\n输入:s = \"0101\"\n输出:\"1001\"\n解释:其中一个 '1' 必须出现在最后一位上。而由剩下的数字可以生产的最大数字是 \"100\" 。所以答案是 \"1001\" 。\n\n\n提示:\n\n * 1 <= s.length <= 100\n * s 仅由 '0' 和 '1' 组成\n * s 中至少包含一个 '1'\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumOddBinaryNumber(self, s: str) -> str:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"010\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"001\"\n\ntest_input = { \"s\": \"0101\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"1001\"\n\ntest_input = { \"s\": \"1\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"1\"\n\ntest_input = { \"s\": \"01\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"01\"\n\ntest_input = { \"s\": \"10\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"01\"\n\ntest_input = { \"s\": \"11\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"11\"\n\ntest_input = { \"s\": \"001\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"001\"\n\ntest_input = { \"s\": \"011\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"101\"\n\ntest_input = { \"s\": \"100\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"001\"\n\ntest_input = { \"s\": \"101\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"101\"\n\ntest_input = { \"s\": \"110\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"101\"\n\ntest_input = { \"s\": \"111\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"111\"\n\ntest_input = { \"s\": \"0010\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"0001\"\n\ntest_input = { \"s\": \"0011\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"1001\"\n\ntest_input = { \"s\": \"0100\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"0001\"\n\ntest_input = { \"s\": \"0111\" }\nassert my_solution.maximumOddBinaryNumber(**test_input) == \"1101\"\n\ntest_in
|
|||
|
{"task_id": "weekly-contest-364-beautiful-towers-i", "url": "https://leetcode.com/problems/beautiful-towers-i", "title": "beautiful-towers-i", "meta": {"questionId": "3114", "questionFrontendId": "2865", "title": "Beautiful Towers I", "titleSlug": "beautiful-towers-i", "isPaidOnly": false, "difficulty": "Medium", "likes": 160, "dislikes": 26, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。\n\n你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。\n\n如果以下条件满足,我们称这些塔是 美丽 的:\n\n 1. 1 <= heights[i] <= maxHeights[i]\n 2. heights 是一个 山状 数组。\n\n如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组:\n\n * 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]\n * 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]\n\n请你返回满足 美丽塔 要求的方案中,高度和的最大值 。\n\n示例 1:\n\n输入:maxHeights = [5,3,4,1,1]\n输出:13\n解释:和最大的美丽塔方案为 heights = [5,3,3,1,1] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 0 处。\n13 是所有美丽塔方案中的最大高度和。\n\n示例 2:\n\n输入:maxHeights = [6,5,3,9,2,7]\n输出:22\n解释: 和最大的美丽塔方案为 heights = [3,3,3,9,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 3 处。\n22 是所有美丽塔方案中的最大高度和。\n\n示例 3:\n\n输入:maxHeights = [3,2,5,5,2,3]\n输出:18\n解释:和最大的美丽塔方案为 heights = [2,2,5,5,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,最大值在 i = 2 处。\n注意,在这个方案中,i = 3 也是一个峰值。\n18 是所有美丽塔方案中的最大高度和。\n\n\n提示:\n\n * 1 <= n == maxHeights <= 103\n * 1 <= maxHeights[i] <= 109\n\"\"\"\nclass Solution:\n def maximumSumOfHeights(self, maxHeights: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。\n\n你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。\n\n如果以下条件满足,我们称这些塔是 美丽 的:\n\n 1. 1 <= heights[i] <= maxHeights[i]\n 2. heights 是一个 山状 数组。\n\n如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组:\n\n * 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]\n * 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]\n\n请你返回满足 美丽塔 要求的方案中,高度和的最大值 。\n\n示例 1:\n\n输入:maxHeights = [5,3,4,1,1]\n输出:13\n解释:和最大的美丽塔方案为 heights = [5,3,3,1,1] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 0 处。\n13 是所有美丽塔方案中的最大高度和。\n\n示例 2:\n\n输入:maxHeights = [6,5,3,9,2,7]\n输出:22\n解释: 和最大的美丽塔方案为 heights = [3,3,3,9,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 3 处。\n22 是所有美丽塔方案中的最大高度和。\n\n示例 3:\n\n输入:maxHeights = [3,2,5,5,2,3]\n输出:18\n解释:和最大的美丽塔方案为 heights = [2,2,5,5,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,最大值在 i = 2 处。\n注意,在这个方案中,i = 3 也是一个峰值。\n18 是所有美丽塔方案中的最大高度和。\n\n\n提示:\n\n * 1 <= n == maxHeights <= 103\n * 1 <= maxHeights[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n``
|
|||
|
{"task_id": "weekly-contest-364-beautiful-towers-ii", "url": "https://leetcode.com/problems/beautiful-towers-ii", "title": "beautiful-towers-ii", "meta": {"questionId": "3113", "questionFrontendId": "2866", "title": "Beautiful Towers II", "titleSlug": "beautiful-towers-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 348, "dislikes": 22, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。\n\n你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。\n\n如果以下条件满足,我们称这些塔是 美丽 的:\n\n 1. 1 <= heights[i] <= maxHeights[i]\n 2. heights 是一个 山状 数组。\n\n如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组:\n\n * 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]\n * 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]\n\n请你返回满足 美丽塔 要求的方案中,高度和的最大值 。\n\n示例 1:\n\n输入:maxHeights = [5,3,4,1,1]\n输出:13\n解释:和最大的美丽塔方案为 heights = [5,3,3,1,1] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 0 处。\n13 是所有美丽塔方案中的最大高度和。\n\n示例 2:\n\n输入:maxHeights = [6,5,3,9,2,7]\n输出:22\n解释: 和最大的美丽塔方案为 heights = [3,3,3,9,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 3 处。\n22 是所有美丽塔方案中的最大高度和。\n\n示例 3:\n\n输入:maxHeights = [3,2,5,5,2,3]\n输出:18\n解释:和最大的美丽塔方案为 heights = [2,2,5,5,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,最大值在 i = 2 处。\n注意,在这个方案中,i = 3 也是一个峰值。\n18 是所有美丽塔方案中的最大高度和。\n\n\n提示:\n\n * 1 <= n == maxHeights <= 105\n * 1 <= maxHeights[i] <= 109\n\"\"\"\nclass Solution:\n def maximumSumOfHeights(self, maxHeights: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。\n\n你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。\n\n如果以下条件满足,我们称这些塔是 美丽 的:\n\n 1. 1 <= heights[i] <= maxHeights[i]\n 2. heights 是一个 山状 数组。\n\n如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组:\n\n * 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]\n * 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]\n\n请你返回满足 美丽塔 要求的方案中,高度和的最大值 。\n\n示例 1:\n\n输入:maxHeights = [5,3,4,1,1]\n输出:13\n解释:和最大的美丽塔方案为 heights = [5,3,3,1,1] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 0 处。\n13 是所有美丽塔方案中的最大高度和。\n\n示例 2:\n\n输入:maxHeights = [6,5,3,9,2,7]\n输出:22\n解释: 和最大的美丽塔方案为 heights = [3,3,3,9,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,峰值在 i = 3 处。\n22 是所有美丽塔方案中的最大高度和。\n\n示例 3:\n\n输入:maxHeights = [3,2,5,5,2,3]\n输出:18\n解释:和最大的美丽塔方案为 heights = [2,2,5,5,2,2] ,这是一个美丽塔方案,因为:\n- 1 <= heights[i] <= maxHeights[i]\n- heights 是个山状数组,最大值在 i = 2 处。\n注意,在这个方案中,i = 3 也是一个峰值。\n18 是所有美丽塔方案中的最大高度和。\n\n\n提示:\n\n * 1 <= n == maxHeights <= 105\n * 1 <= maxHeights[i] <= 109\n\n\n请完成下面的代码来解决上述问<E8BFB0>
|
|||
|
{"task_id": "weekly-contest-364-count-valid-paths-in-a-tree", "url": "https://leetcode.com/problems/count-valid-paths-in-a-tree", "title": "count-valid-paths-in-a-tree", "meta": {"questionId": "3112", "questionFrontendId": "2867", "title": "Count Valid Paths in a Tree", "titleSlug": "count-valid-paths-in-a-tree", "isPaidOnly": false, "difficulty": "Hard", "likes": 212, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一棵 n 个节点的无向树,节点编号为 1 到 n 。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示节点 ui 和 vi 在树中有一条边。\n\n请你返回树中的 合法路径数目 。\n\n如果在节点 a 到节点 b 之间 恰好有一个 节点的编号是质数,那么我们称路径 (a, b) 是 合法的 。\n\n注意:\n\n * 路径 (a, b) 指的是一条从节点 a 开始到节点 b 结束的一个节点序列,序列中的节点 互不相同 ,且相邻节点之间在树上有一条边。\n * 路径 (a, b) 和路径 (b, a) 视为 同一条 路径,且只计入答案 一次 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/27/example1.png]\n\n输入:n = 5, edges = [[1,2],[1,3],[2,4],[2,5]]\n输出:4\n解释:恰好有一个质数编号的节点路径有:\n- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。\n- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。\n- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。\n- (2, 4) 因为路径 2 到 4 只包含一个质数 2 。\n只有 4 条合法路径。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/27/example2.png]\n\n输入:n = 6, edges = [[1,2],[1,3],[2,4],[3,5],[3,6]]\n输出:6\n解释:恰好有一个质数编号的节点路径有:\n- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。\n- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。\n- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。\n- (1, 6) 因为路径 1 到 6 只包含一个质数 3 。\n- (2, 4) 因为路径 2 到 4 只包含一个质数 2 。\n- (3, 6) 因为路径 3 到 6 只包含一个质数 3 。\n只有 6 条合法路径。\n\n\n提示:\n\n * 1 <= n <= 105\n * edges.length == n - 1\n * edges[i].length == 2\n * 1 <= ui, vi <= n\n * 输入保证 edges 形成一棵合法的树。\n\"\"\"\nclass Solution:\n def countPaths(self, n: int, edges: List[List[int]]) -> int:\n ", "prompt_sft": "给你一棵 n 个节点的无向树,节点编号为 1 到 n 。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示节点 ui 和 vi 在树中有一条边。\n\n请你返回树中的 合法路径数目 。\n\n如果在节点 a 到节点 b 之间 恰好有一个 节点的编号是质数,那么我们称路径 (a, b) 是 合法的 。\n\n注意:\n\n * 路径 (a, b) 指的是一条从节点 a 开始到节点 b 结束的一个节点序列,序列中的节点 互不相同 ,且相邻节点之间在树上有一条边。\n * 路径 (a, b) 和路径 (b, a) 视为 同一条 路径,且只计入答案 一次 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/27/example1.png]\n\n输入:n = 5, edges = [[1,2],[1,3],[2,4],[2,5]]\n输出:4\n解释:恰好有一个质数编号的节点路径有:\n- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。\n- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。\n- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。\n- (2, 4) 因为路径 2 到 4 只包含一个质数 2 。\n只有 4 条合法路径。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/27/example2.png]\n\n输入:n = 6, edges = [[1,2],[1,3],[2,4],[3,5],[3,6]]\n输出:6\n解释:恰好有一个质数编号的节点路径有:\n- (1, 2) 因为路径 1 到 2 只包含一个质数 2 。\n- (1, 3) 因为路径 1 到 3 只包含一个质数 3 。\n- (1, 4) 因为路径 1 到 4 只包含一个质数 2 。\n- (1, 6) 因为路径 1 到 6 只包含一
|
|||
|
{"task_id": "weekly-contest-363-sum-of-values-at-indices-with-k-set-bits", "url": "https://leetcode.com/problems/sum-of-values-at-indices-with-k-set-bits", "title": "sum-of-values-at-indices-with-k-set-bits", "meta": {"questionId": "3093", "questionFrontendId": "2859", "title": "Sum of Values at Indices With K Set Bits", "titleSlug": "sum-of-values-at-indices-with-k-set-bits", "isPaidOnly": false, "difficulty": "Easy", "likes": 154, "dislikes": 16, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\n请你用整数形式返回 nums 中的特定元素之 和 ,这些特定元素满足:其对应下标的二进制表示中恰存在 k 个置位。\n\n整数的二进制表示中的 1 就是这个整数的 置位 。\n\n例如,21 的二进制表示为 10101 ,其中有 3 个置位。\n\n示例 1:\n\n输入:nums = [5,10,1,5,2], k = 1\n输出:13\n解释:下标的二进制表示是:\n0 = 0002\n1 = 0012\n2 = 0102\n3 = 0112\n4 = 1002\n下标 1、2 和 4 在其二进制表示中都存在 k = 1 个置位。\n因此,答案为 nums[1] + nums[2] + nums[4] = 13 。\n\n示例 2:\n\n输入:nums = [4,3,2,1], k = 2\n输出:1\n解释:下标的二进制表示是:\n0 = 002\n1 = 012\n2 = 102\n3 = 112\n只有下标 3 的二进制表示中存在 k = 2 个置位。\n因此,答案为 nums[3] = 1 。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 105\n * 0 <= k <= 10\n\"\"\"\nclass Solution:\n def sumIndicesWithKSetBits(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\n请你用整数形式返回 nums 中的特定元素之 和 ,这些特定元素满足:其对应下标的二进制表示中恰存在 k 个置位。\n\n整数的二进制表示中的 1 就是这个整数的 置位 。\n\n例如,21 的二进制表示为 10101 ,其中有 3 个置位。\n\n示例 1:\n\n输入:nums = [5,10,1,5,2], k = 1\n输出:13\n解释:下标的二进制表示是:\n0 = 0002\n1 = 0012\n2 = 0102\n3 = 0112\n4 = 1002\n下标 1、2 和 4 在其二进制表示中都存在 k = 1 个置位。\n因此,答案为 nums[1] + nums[2] + nums[4] = 13 。\n\n示例 2:\n\n输入:nums = [4,3,2,1], k = 2\n输出:1\n解释:下标的二进制表示是:\n0 = 002\n1 = 012\n2 = 102\n3 = 112\n只有下标 3 的二进制表示中存在 k = 2 个置位。\n因此,答案为 nums[3] = 1 。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 105\n * 0 <= k <= 10\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sumIndicesWithKSetBits(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,10,1,5,2], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 13\n\ntest_input = { \"nums\": [4,3,2,1], \"k\": 2 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 1\n\ntest_input = { \"nums\": [1], \"k\": 0 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 1\n\ntest_input = { \"nums\": [100000], \"k\": 0 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 100000\n\ntest_input = { \"nums\": [2,2], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 2\n\ntest_input = { \"nums\": [2,4], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 4\n\ntest_input = { \"nums\": [2,7], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 7\n\ntest_input = { \"nums\": [3,3], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 3\n\ntest_input = { \"nums\": [3,9], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 9\n\ntest_input = { \"nums\": [4,7], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 7\n\ntest_input = { \"nums\": [4,8], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_input) == 8\n\ntest_input = { \"nums\": [6,6], \"k\": 1 }\nassert my_solution.sumIndicesWithKSetBits(**test_in
|
|||
|
{"task_id": "weekly-contest-363-happy-students", "url": "https://leetcode.com/problems/happy-students", "title": "happy-students", "meta": {"questionId": "3104", "questionFrontendId": "2860", "title": "Happy Students", "titleSlug": "happy-students", "isPaidOnly": false, "difficulty": "Medium", "likes": 144, "dislikes": 272, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。班主任希望能够在让所有学生保持开心的情况下选出一组学生:\n\n如果能够满足下述两个条件之一,则认为第 i 位学生将会保持开心:\n\n * 这位学生被选中,并且被选中的学生人数 严格大于 nums[i] 。\n * 这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i] 。\n\n返回能够满足让所有学生保持开心的分组方法的数目。\n\n示例 1:\n\n输入:nums = [1,1]\n输出:2\n解释:\n有两种可行的方法:\n班主任没有选中学生。\n班主任选中所有学生形成一组。\n如果班主任仅选中一个学生来完成分组,那么两个学生都无法保持开心。因此,仅存在两种可行的方法。\n\n示例 2:\n\n输入:nums = [6,0,3,3,6,7,2,7]\n输出:3\n解释:\n存在三种可行的方法:\n班主任选中下标为 1 的学生形成一组。\n班主任选中下标为 1、2、3、6 的学生形成一组。\n班主任选中所有学生形成一组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i] < nums.length\n\"\"\"\nclass Solution:\n def countWays(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。班主任希望能够在让所有学生保持开心的情况下选出一组学生:\n\n如果能够满足下述两个条件之一,则认为第 i 位学生将会保持开心:\n\n * 这位学生被选中,并且被选中的学生人数 严格大于 nums[i] 。\n * 这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i] 。\n\n返回能够满足让所有学生保持开心的分组方法的数目。\n\n示例 1:\n\n输入:nums = [1,1]\n输出:2\n解释:\n有两种可行的方法:\n班主任没有选中学生。\n班主任选中所有学生形成一组。\n如果班主任仅选中一个学生来完成分组,那么两个学生都无法保持开心。因此,仅存在两种可行的方法。\n\n示例 2:\n\n输入:nums = [6,0,3,3,6,7,2,7]\n输出:3\n解释:\n存在三种可行的方法:\n班主任选中下标为 1 的学生形成一组。\n班主任选中下标为 1、2、3、6 的学生形成一组。\n班主任选中所有学生形成一组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i] < nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countWays(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,1] }\nassert my_solution.countWays(**test_input) == 2\n\ntest_input = { \"nums\": [6,0,3,3,6,7,2,7] }\nassert my_solution.countWays(**test_input) == 3\n\ntest_input = { \"nums\": [1,1,0,1] }\nassert my_solution.countWays(**test_input) == 1\n\ntest_input = { \"nums\": [5,0,3,4,2,1,2,4] }\nassert my_solution.countWays(**test_input) == 1\n\ntest_input = { \"nums\": [0,4,4,4,4,4,2] }\nassert my_solution.countWays(**test_input) == 2\n\ntest_input = { \"nums\": [0,1,5,6,8,7,4,7,2] }\nassert my_solution.countWays(**test_input) == 2\n\ntest_input = { \"nums\": [0] }\nassert my_solution.countWays(**test_input) == 1\n\ntest_input = { \"nums\": [2,2,7,1,2,2,4,7] }\nassert my_solution.countWays(**test_input) == 3\n\ntest_input = { \"nums\": [0,2,2,2,3,3,3,3] }\nassert my_solution.countWays(**test_input) == 2\n\ntest_input = { \"nums\": [7,7,7,7,7,7,7,7,2] }\nassert my_solution.countWays(**test_input) == 2\n\ntest_input = { \"nums\": [4,2,3,6,6,0,6,8,3] }\nassert my_solution.countWays(**test_input) == 3\n\ntest_inpu
|
|||
|
{"task_id": "weekly-contest-363-maximum-number-of-alloys", "url": "https://leetcode.com/problems/maximum-number-of-alloys", "title": "maximum-number-of-alloys", "meta": {"questionId": "3095", "questionFrontendId": "2861", "title": "Maximum Number of Alloys", "titleSlug": "maximum-number-of-alloys", "isPaidOnly": false, "difficulty": "Medium", "likes": 227, "dislikes": 36, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。\n\n对于第 i 台机器而言,创建合金需要 composition[i][j] 份 j 类型金属。最初,你拥有 stock[i] 份 i 类型金属,而每购入一份 i 类型金属需要花费 cost[i] 的金钱。\n\n给你整数 n、k、budget,下标从 1 开始的二维数组 composition,两个下标从 1 开始的数组 stock 和 cost,请你在预算不超过 budget 金钱的前提下,最大化 公司制造合金的数量。\n\n所有合金都需要由同一台机器制造。\n\n返回公司可以制造的最大合金数。\n\n示例 1:\n\n输入:n = 3, k = 2, budget = 15, composition = [[1,1,1],[1,1,10]], stock = [0,0,0], cost = [1,2,3]\n输出:2\n解释:最优的方法是使用第 1 台机器来制造合金。\n要想制造 2 份合金,我们需要购买:\n- 2 份第 1 类金属。\n- 2 份第 2 类金属。\n- 2 份第 3 类金属。\n总共需要 2 * 1 + 2 * 2 + 2 * 3 = 12 的金钱,小于等于预算 15 。\n注意,我们最开始时候没有任何一类金属,所以必须买齐所有需要的金属。\n可以证明在示例条件下最多可以制造 2 份合金。\n\n示例 2:\n\n输入:n = 3, k = 2, budget = 15, composition = [[1,1,1],[1,1,10]], stock = [0,0,100], cost = [1,2,3]\n输出:5\n解释:最优的方法是使用第 2 台机器来制造合金。\n要想制造 5 份合金,我们需要购买:\n- 5 份第 1 类金属。\n- 5 份第 2 类金属。\n- 0 份第 3 类金属。\n总共需要 5 * 1 + 5 * 2 + 0 * 3 = 15 的金钱,小于等于预算 15 。\n可以证明在示例条件下最多可以制造 5 份合金。\n\n示例 3:\n\n输入:n = 2, k = 3, budget = 10, composition = [[2,1],[1,2],[1,1]], stock = [1,1], cost = [5,5]\n输出:2\n解释:最优的方法是使用第 3 台机器来制造合金。\n要想制造 2 份合金,我们需要购买:\n- 1 份第 1 类金属。\n- 1 份第 2 类金属。\n总共需要 1 * 5 + 1 * 5 = 10 的金钱,小于等于预算 10 。\n可以证明在示例条件下最多可以制造 2 份合金。\n\n\n提示:\n\n * 1 <= n, k <= 100\n * 0 <= budget <= 108\n * composition.length == k\n * composition[i].length == n\n * 1 <= composition[i][j] <= 100\n * stock.length == cost.length == n\n * 0 <= stock[i] <= 108\n * 1 <= cost[i] <= 100\n\"\"\"\nclass Solution:\n def maxNumberOfAlloys(self, n: int, k: int, budget: int, composition: List[List[int]], stock: List[int], cost: List[int]) -> int:\n ", "prompt_sft": "假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。\n\n对于第 i 台机器而言,创建合金需要 composition[i][j] 份 j 类型金属。最初,你拥有 stock[i] 份 i 类型金属,而每购入一份 i 类型金属需要花费 cost[i] 的金钱。\n\n给你整数 n、k、budget,下标从 1 开始的二维数组 composition,两个下标从 1 开始的数组 stock 和 cost,请你在预算不超过 budget 金钱的前提下,最大化 公司制造合金的数量。\n\n所有合金都需要由同一台机器制造。\n\n返回公司可以制造的最大合金数。\n\n示例 1:\n\n输入:n = 3, k = 2, budget = 15, composition = [[1,1,1],[1,1,10]], stock = [0,0,0], cost = [1,2,3]\n输出:2\n解释:最优
|
|||
|
{"task_id": "weekly-contest-363-maximum-element-sum-of-a-complete-subset-of-indices", "url": "https://leetcode.com/problems/maximum-element-sum-of-a-complete-subset-of-indices", "title": "maximum-element-sum-of-a-complete-subset-of-indices", "meta": {"questionId": "3047", "questionFrontendId": "2862", "title": "Maximum Element-Sum of a Complete Subset of Indices", "titleSlug": "maximum-element-sum-of-a-complete-subset-of-indices", "isPaidOnly": false, "difficulty": "Hard", "likes": 157, "dislikes": 27, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 1 开始、由 n 个整数组成的数组。\n\n如果一组数字中每对元素的乘积都是一个完全平方数,则称这组数字是一个 完全集 。\n\n下标集 {1, 2, ..., n} 的子集可以表示为 {i1, i2, ..., ik},我们定义对应该子集的 元素和 为 nums[i1] + nums[i2] + ... + nums[ik] 。\n\n返回下标集 {1, 2, ..., n} 的 完全子集 所能取到的 最大元素和 。\n\n完全平方数是指可以表示为一个整数和其自身相乘的数。\n\n示例 1:\n\n输入:nums = [8,7,3,5,7,2,4,9]\n输出:16\n解释:除了由单个下标组成的子集之外,还有两个下标集的完全子集:{1,4} 和 {2,8} 。\n与下标 1 和 4 对应的元素和等于 nums[1] + nums[4] = 8 + 5 = 13 。\n与下标 2 和 8 对应的元素和等于 nums[2] + nums[8] = 7 + 9 = 16 。\n因此,下标集的完全子集可以取到的最大元素和为 16 。\n\n示例 2:\n\n输入:nums = [5,10,3,10,1,13,7,9,4]\n输出:19\n解释:除了由单个下标组成的子集之外,还有四个下标集的完全子集:{1,4}、{1,9}、{2,8}、{4,9} 和 {1,4,9} 。\n与下标 1 和 4 对应的元素和等于 nums[1] + nums[4] = 5 + 10 = 15 。\n与下标 1 和 9 对应的元素和等于 nums[1] + nums[9] = 5 + 4 = 9 。\n与下标 2 和 8 对应的元素和等于 nums[2] + nums[8] = 10 + 9 = 19 。\n与下标 4 和 9 对应的元素和等于 nums[4] + nums[9] = 10 + 4 = 14 。\n与下标 1、4 和 9 对应的元素和等于 nums[1] + nums[4] + nums[9] = 5 + 10 + 4 = 19 。\n因此,下标集的完全子集可以取到的最大元素和为 19 。\n\n\n提示:\n\n * 1 <= n == nums.length <= 104\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def maximumSum(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 1 开始、由 n 个整数组成的数组。\n\n如果一组数字中每对元素的乘积都是一个完全平方数,则称这组数字是一个 完全集 。\n\n下标集 {1, 2, ..., n} 的子集可以表示为 {i1, i2, ..., ik},我们定义对应该子集的 元素和 为 nums[i1] + nums[i2] + ... + nums[ik] 。\n\n返回下标集 {1, 2, ..., n} 的 完全子集 所能取到的 最大元素和 。\n\n完全平方数是指可以表示为一个整数和其自身相乘的数。\n\n示例 1:\n\n输入:nums = [8,7,3,5,7,2,4,9]\n输出:16\n解释:除了由单个下标组成的子集之外,还有两个下标集的完全子集:{1,4} 和 {2,8} 。\n与下标 1 和 4 对应的元素和等于 nums[1] + nums[4] = 8 + 5 = 13 。\n与下标 2 和 8 对应的元素和等于 nums[2] + nums[8] = 7 + 9 = 16 。\n因此,下标集的完全子集可以取到的最大元素和为 16 。\n\n示例 2:\n\n输入:nums = [5,10,3,10,1,13,7,9,4]\n输出:19\n解释:除了由单个下标组成的子集之外,还有四个下标集的完全子集:{1,4}、{1,9}、{2,8}、{4,9} 和 {1,4,9} 。\n与下标 1 和 4 对应的元素和等于 nums[1] + nums[4] = 5 + 10 = 15 。\n与下标 1 和 9 对应的元素和等于 nums[1] + nums[9] = 5 + 4 = 9 。\n与下标 2 和 8 对应的元素和等于 nums[2] + nums[8] = 10 + 9 = 19 。\n与下标 4 和 9 对应的元素和等于 nums[4] + nums[9] = 10 + 4 = 14 。\n与下标 1、4 和 9 对应的元素和等于 nums[1] + nums[4] + nums[9] = 5 + 10 + 4 = 19 。\n因此,下标集的完全子集可以取到的最大元素和为 19 。\n\n\n提示:\n\n * 1 <= n == nums.length <= 104\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决<E8A7A3>
|
|||
|
{"task_id": "biweekly-contest-113-minimum-right-shifts-to-sort-the-array", "url": "https://leetcode.com/problems/minimum-right-shifts-to-sort-the-array", "title": "minimum-right-shifts-to-sort-the-array", "meta": {"questionId": "3045", "questionFrontendId": "2855", "title": "Minimum Right Shifts to Sort the Array", "titleSlug": "minimum-right-shifts-to-sort-the-array", "isPaidOnly": false, "difficulty": "Easy", "likes": 169, "dislikes": 6, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 下标从 0 开始的数组 nums ,数组中的元素为 互不相同 的正整数。请你返回让 nums 成为递增数组的 最少右移 次数,如果无法得到递增数组,返回 -1 。\n\n一次 右移 指的是同时对所有下标进行操作,将下标为 i 的元素移动到下标 (i + 1) % n 处。\n\n示例 1:\n\n输入:nums = [3,4,5,1,2]\n输出:2\n解释:\n第一次右移后,nums = [2,3,4,5,1] 。\n第二次右移后,nums = [1,2,3,4,5] 。\n现在 nums 是递增数组了,所以答案为 2 。\n\n示例 2:\n\n输入:nums = [1,3,5]\n输出:0\n解释:nums 已经是递增数组了,所以答案为 0 。\n\n示例 3:\n\n输入:nums = [2,1,4]\n输出:-1\n解释:无法将数组变为递增数组。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n * nums 中的整数互不相同。\n\"\"\"\nclass Solution:\n def minimumRightShifts(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个长度为 n 下标从 0 开始的数组 nums ,数组中的元素为 互不相同 的正整数。请你返回让 nums 成为递增数组的 最少右移 次数,如果无法得到递增数组,返回 -1 。\n\n一次 右移 指的是同时对所有下标进行操作,将下标为 i 的元素移动到下标 (i + 1) % n 处。\n\n示例 1:\n\n输入:nums = [3,4,5,1,2]\n输出:2\n解释:\n第一次右移后,nums = [2,3,4,5,1] 。\n第二次右移后,nums = [1,2,3,4,5] 。\n现在 nums 是递增数组了,所以答案为 2 。\n\n示例 2:\n\n输入:nums = [1,3,5]\n输出:0\n解释:nums 已经是递增数组了,所以答案为 0 。\n\n示例 3:\n\n输入:nums = [2,1,4]\n输出:-1\n解释:无法将数组变为递增数组。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n * nums 中的整数互不相同。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumRightShifts(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [3,4,5,1,2] }\nassert my_solution.minimumRightShifts(**test_input) == 2\n\ntest_input = { \"nums\": [1,3,5] }\nassert my_solution.minimumRightShifts(**test_input) == 0\n\ntest_input = { \"nums\": [2,1,4] }\nassert my_solution.minimumRightShifts(**test_input) == -1\n\ntest_input = { \"nums\": [31,72,79,25] }\nassert my_solution.minimumRightShifts(**test_input) == 1\n\ntest_input = { \"nums\": [27,33,42,58,81,8,9,17] }\nassert my_solution.minimumRightShifts(**test_input) == 3\n\ntest_input = { \"nums\": [72,13,21,35,52] }\nassert my_solution.minimumRightShifts(**test_input) == 4\n\ntest_input = { \"nums\": [65,73,77,1] }\nassert my_solution.minimumRightShifts(**test_input) == 1\n\ntest_input = { \"nums\": [100,8,14,68,80,84] }\nassert my_solution.minimumRightShifts(**test_input) == 5\n\ntest_input = { \"nums\": [53,60,64,69,98,40] }\nassert my_solution.minimumRightShifts(**test_input) == 1\n\ntest_input = { \"nums\": [21] }\nassert my_solution.minimumRightShifts(**test_input) == 0\n\ntest_input = { \"nums\": [78,12,18,21,23,36,64,70] }\nassert my_solution.minimumRightShifts(**test_input) == 7\n\ntest_input = { \"nums\": [25,26,53,91,92,99,10,24] }\nassert my_solution.minimumRightShifts(**test_input) == 2\n\ntest_input = { \"nums\": [63,51,65,87,6,17,32,14,42,46] }\nassert my_solution.minimumRightShifts(**test_input) == -1\n\ntest_input = { \"nums\": [43,46,75,76,85,96,9,19,25] }\nassert my_solution.minimumRightShifts(**test_input) == 3\n\ntest_input =
|
|||
|
{"task_id": "biweekly-contest-113-minimum-array-length-after-pair-removals", "url": "https://leetcode.com/problems/minimum-array-length-after-pair-removals", "title": "minimum-array-length-after-pair-removals", "meta": {"questionId": "3081", "questionFrontendId": "2856", "title": "Minimum Array Length After Pair Removals", "titleSlug": "minimum-array-length-after-pair-removals", "isPaidOnly": false, "difficulty": "Medium", "likes": 259, "dislikes": 88, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的 非递减 整数数组 nums 。\n\n你可以执行以下操作任意次:\n\n * 选择 两个 下标 i 和 j ,满足 i < j 且 nums[i] < nums[j] 。\n * 将 nums 中下标在 i 和 j 处的元素删除。剩余元素按照原来的顺序组成新的数组,下标也重新从 0 开始编号。\n\n请你返回一个整数,表示执行以上操作任意次后(可以执行 0 次),nums 数组的 最小 数组长度。\n\n请注意,nums 数组是按 非降序 排序的。\n\n示例 1:\n\n输入:nums = [1,3,4,9]\n输出:0\n解释:一开始,nums = [1, 3, 4, 9] 。\n第一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 1 < 3 。\n删除下标 0 和 1 处的元素,nums 变成 [4, 9] 。\n下一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 4 < 9 。\n删除下标 0 和 1 处的元素,nums 变成空数组 [] 。\n所以,可以得到的最小数组长度为 0 。\n\n示例 2:\n\n输入:nums = [2,3,6,9]\n输出:0\n解释:一开始,nums = [2, 3, 6, 9] 。\n第一次操作,我们选择下标 0 和 2 ,满足 nums[0] < nums[2] <=> 2 < 6 。\n删除下标 0 和 2 处的元素,nums 变成 [3, 9] 。\n下一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 3 < 9 。\n删除下标 0 和 1 处的元素,nums 变成空数组 [] 。\n所以,可以得到的最小数组长度为 0 。\n\n示例 3:\n\n输入:nums = [1,1,2]\n输出:1\n解释:一开始,nums = [1, 1, 2] 。\n第一次操作,我们选择下标 0 和 2 ,满足 nums[0] < nums[2] <=> 1 < 2 。\n删除下标 0 和 2 处的元素,nums 变成 [1] 。\n无法对数组再执行操作。\n所以,可以得到的最小数组长度为 1 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n * nums 是 非递减 数组。\n\"\"\"\nclass Solution:\n def minLengthAfterRemovals(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的 非递减 整数数组 nums 。\n\n你可以执行以下操作任意次:\n\n * 选择 两个 下标 i 和 j ,满足 i < j 且 nums[i] < nums[j] 。\n * 将 nums 中下标在 i 和 j 处的元素删除。剩余元素按照原来的顺序组成新的数组,下标也重新从 0 开始编号。\n\n请你返回一个整数,表示执行以上操作任意次后(可以执行 0 次),nums 数组的 最小 数组长度。\n\n请注意,nums 数组是按 非降序 排序的。\n\n示例 1:\n\n输入:nums = [1,3,4,9]\n输出:0\n解释:一开始,nums = [1, 3, 4, 9] 。\n第一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 1 < 3 。\n删除下标 0 和 1 处的元素,nums 变成 [4, 9] 。\n下一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 4 < 9 。\n删除下标 0 和 1 处的元素,nums 变成空数组 [] 。\n所以,可以得到的最小数组长度为 0 。\n\n示例 2:\n\n输入:nums = [2,3,6,9]\n输出:0\n解释:一开始,nums = [2, 3, 6, 9] 。\n第一次操作,我们选择下标 0 和 2 ,满足 nums[0] < nums[2] <=> 2 < 6 。\n删除下标 0 和 2 处的元素,nums 变成 [3, 9] 。\n下一次操作,我们选择下标 0 和 1 ,满足 nums[0] < nums[1] <=> 3 < 9 。\n删除下标 0 和 1 处的元素,nums 变成空数组 [] 。\n所以,可以得到的最小数组长度为 0 。\n\n示例 3:\n\n输入:nums = [1,1,2]\n输出:1\n解释:一开始,nums = [1, 1, 2] 。\n第一次操作,我们选择下标 0 <20>
|
|||
|
{"task_id": "biweekly-contest-113-count-pairs-of-points-with-distance-k", "url": "https://leetcode.com/problems/count-pairs-of-points-with-distance-k", "title": "count-pairs-of-points-with-distance-k", "meta": {"questionId": "2953", "questionFrontendId": "2857", "title": "Count Pairs of Points With Distance k", "titleSlug": "count-pairs-of-points-with-distance-k", "isPaidOnly": false, "difficulty": "Medium", "likes": 238, "dislikes": 34, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个 二维 整数数组 coordinates 和一个整数 k ,其中 coordinates[i] = [xi, yi] 是第 i 个点在二维平面里的坐标。\n\n我们定义两个点 (x1, y1) 和 (x2, y2) 的 距离 为 (x1 XOR x2) + (y1 XOR y2) ,XOR 指的是按位异或运算。\n\n请你返回满足 i < j 且点 i 和点 j之间距离为 k 的点对数目。\n\n示例 1:\n\n输入:coordinates = [[1,2],[4,2],[1,3],[5,2]], k = 5\n输出:2\n解释:以下点对距离为 k :\n- (0, 1):(1 XOR 4) + (2 XOR 2) = 5 。\n- (2, 3):(1 XOR 5) + (3 XOR 2) = 5 。\n\n示例 2:\n\n输入:coordinates = [[1,3],[1,3],[1,3],[1,3],[1,3]], k = 0\n输出:10\n解释:任何两个点之间的距离都为 0 ,所以总共有 10 组点对。\n\n\n提示:\n\n * 2 <= coordinates.length <= 50000\n * 0 <= xi, yi <= 106\n * 0 <= k <= 100\n\"\"\"\nclass Solution:\n def countPairs(self, coordinates: List[List[int]], k: int) -> int:\n ", "prompt_sft": "给你一个 二维 整数数组 coordinates 和一个整数 k ,其中 coordinates[i] = [xi, yi] 是第 i 个点在二维平面里的坐标。\n\n我们定义两个点 (x1, y1) 和 (x2, y2) 的 距离 为 (x1 XOR x2) + (y1 XOR y2) ,XOR 指的是按位异或运算。\n\n请你返回满足 i < j 且点 i 和点 j之间距离为 k 的点对数目。\n\n示例 1:\n\n输入:coordinates = [[1,2],[4,2],[1,3],[5,2]], k = 5\n输出:2\n解释:以下点对距离为 k :\n- (0, 1):(1 XOR 4) + (2 XOR 2) = 5 。\n- (2, 3):(1 XOR 5) + (3 XOR 2) = 5 。\n\n示例 2:\n\n输入:coordinates = [[1,3],[1,3],[1,3],[1,3],[1,3]], k = 0\n输出:10\n解释:任何两个点之间的距离都为 0 ,所以总共有 10 组点对。\n\n\n提示:\n\n * 2 <= coordinates.length <= 50000\n * 0 <= xi, yi <= 106\n * 0 <= k <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countPairs(self, coordinates: List[List[int]], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"coordinates\": [[1,2],[4,2],[1,3],[5,2]], \"k\": 5 }\nassert my_solution.countPairs(**test_input) == 2\n\ntest_input = { \"coordinates\": [[1,3],[1,3],[1,3],[1,3],[1,3]], \"k\": 0 }\nassert my_solution.countPairs(**test_input) == 10\n\ntest_input = { \"coordinates\": [[27,94],[61,68],[47,0],[100,4],[127,89],[61,103],[26,4],[51,54],[91,26],[98,23],[80,74],[19,93]], \"k\": 95 }\nassert my_solution.countPairs(**test_input) == 5\n\ntest_input = { \"coordinates\": [[39,29],[98,59],[65,77],[41,26],[95,12],[71,66],[41,93],[28,33],[96,40],[39,8],[106,54],[8,49],[68,59],[21,15],[3,66],[77,85],[111,51]], \"k\": 21 }\nassert my_solution.countPairs(**test_input) == 6\n\ntest_input = { \"coordinates\": [[100,32],[69,8],[85,31],[69,47],[62,34],[102,43],[81,39],[90,0],[123,6],[79,18],[21,94],[13,36],[49,97],[76,59],[42,74],[60,68],[21,11],[71,21],[64,13],[64,95],[5,85],[118,53],[70,44],[38,57],[32,119],[80,61],[13,68],[43,108],[86,49]], \"k\": 39 }\nassert my_solution.countPairs(**test_input) == 20\n\ntest_input = { \"coordinates\": [[60,55],[35,32],[99,2],[58,57],[16,2],[43,28],[30,35],[35,83],[104,41],[20,69],[58,14],[12,92],[71,49],[7,82],[65,68],[9,40],[15,56],[57,46],[21,8],[37,64],[42,94],[73,91],[12,121],[10,21],[41,89]], \"k\": 54 }\nassert my_solution.countPairs(**test_input) == 10\n\ntest_input = { \"coordinates\": [[94,23],[86,58],[126,55],[107,23],[121,60],[89,28],[123,15],[127,3],[100,49],[5,3],[81,49],[93,0],[95,37],[92,25]], \"k\": 53 }\nassert my_solution.countPairs(**test_input) == 18\n\ntest_input = { \"coordinates\"
|
|||
|
{"task_id": "biweekly-contest-113-minimum-edge-reversals-so-every-node-is-reachable", "url": "https://leetcode.com/problems/minimum-edge-reversals-so-every-node-is-reachable", "title": "minimum-edge-reversals-so-every-node-is-reachable", "meta": {"questionId": "3105", "questionFrontendId": "2858", "title": "Minimum Edge Reversals So Every Node Is Reachable", "titleSlug": "minimum-edge-reversals-so-every-node-is-reachable", "isPaidOnly": false, "difficulty": "Hard", "likes": 227, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个 n 个点的 简单有向图 (没有重复边的有向图),节点编号为 0 到 n - 1 。如果这些边是双向边,那么这个图形成一棵 树 。\n\n给你一个整数 n 和一个 二维 整数数组 edges ,其中 edges[i] = [ui, vi] 表示从节点 ui 到节点 vi 有一条 有向边 。\n\n边反转 指的是将一条边的方向反转,也就是说一条从节点 ui 到节点 vi 的边会变为一条从节点 vi 到节点 ui 的边。\n\n对于范围 [0, n - 1] 中的每一个节点 i ,你的任务是分别 独立 计算 最少 需要多少次 边反转 ,从节点 i 出发经过 一系列有向边 ,可以到达所有的节点。\n\n请你返回一个长度为 n 的整数数组 answer ,其中 answer[i]表示从节点 i 出发,可以到达所有节点的 最少边反转 次数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/26/image-20230826221104-3.png]\n\n输入:n = 4, edges = [[2,0],[2,1],[1,3]]\n输出:[1,1,0,2]\n解释:上图表示了与输入对应的简单有向图。\n对于节点 0 :反转 [2,0] ,从节点 0 出发可以到达所有节点。\n所以 answer[0] = 1 。\n对于节点 1 :反转 [2,1] ,从节点 1 出发可以到达所有节点。\n所以 answer[1] = 1 。\n对于节点 2 :不需要反转就可以从节点 2 出发到达所有节点。\n所以 answer[2] = 0 。\n对于节点 3 :反转 [1,3] 和 [2,1] ,从节点 3 出发可以到达所有节点。\n所以 answer[3] = 2 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/26/image-20230826225541-2.png]\n\n输入:n = 3, edges = [[1,2],[2,0]]\n输出:[2,0,1]\n解释:上图表示了与输入对应的简单有向图。\n对于节点 0 :反转 [2,0] 和 [1,2] ,从节点 0 出发可以到达所有节点。\n所以 answer[0] = 2 。\n对于节点 1 :不需要反转就可以从节点 2 出发到达所有节点。\n所以 answer[1] = 0 。\n对于节点 2 :反转 [1,2] ,从节点 2 出发可以到达所有节点。\n所以 answer[2] = 1 。\n\n\n提示:\n\n * 2 <= n <= 105\n * edges.length == n - 1\n * edges[i].length == 2\n * 0 <= ui == edges[i][0] < n\n * 0 <= vi == edges[i][1] < n\n * ui != vi\n * 输入保证如果边是双向边,可以得到一棵树。\n\"\"\"\nclass Solution:\n def minEdgeReversals(self, n: int, edges: List[List[int]]) -> List[int]:\n ", "prompt_sft": "给你一个 n 个点的 简单有向图 (没有重复边的有向图),节点编号为 0 到 n - 1 。如果这些边是双向边,那么这个图形成一棵 树 。\n\n给你一个整数 n 和一个 二维 整数数组 edges ,其中 edges[i] = [ui, vi] 表示从节点 ui 到节点 vi 有一条 有向边 。\n\n边反转 指的是将一条边的方向反转,也就是说一条从节点 ui 到节点 vi 的边会变为一条从节点 vi 到节点 ui 的边。\n\n对于范围 [0, n - 1] 中的每一个节点 i ,你的任务是分别 独立 计算 最少 需要多少次 边反转 ,从节点 i 出发经过 一系列有向边 ,可以到达所有的节点。\n\n请你返回一个长度为 n 的整数数组 answer ,其中 answer[i]表示从节点 i 出发,可以到达所有节点的 最少边反转 次数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/26/image-20230826221104-3.png]\n\n输入:n = 4, edges = [[2,0],[2,1],[1,3]]\n输出:[1,1,0,2]\n解释:上图表示了与输入对应的简单有向图。\n<><6E>
|
|||
|
{"task_id": "weekly-contest-362-points-that-intersect-with-cars", "url": "https://leetcode.com/problems/points-that-intersect-with-cars", "title": "points-that-intersect-with-cars", "meta": {"questionId": "3034", "questionFrontendId": "2848", "title": "Points That Intersect With Cars", "titleSlug": "points-that-intersect-with-cars", "isPaidOnly": false, "difficulty": "Easy", "likes": 211, "dislikes": 13, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。\n\n返回数轴上被车 任意部分 覆盖的整数点的数目。\n\n示例 1:\n\n输入:nums = [[3,6],[1,5],[4,7]]\n输出:7\n解释:从 1 到 7 的所有点都至少与一辆车相交,因此答案为 7 。\n\n示例 2:\n\n输入:nums = [[1,3],[5,8]]\n输出:7\n解释:1、2、3、5、6、7、8 共计 7 个点满足至少与一辆车相交,因此答案为 7 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * nums[i].length == 2\n * 1 <= starti <= endi <= 100\n\"\"\"\nclass Solution:\n def numberOfPoints(self, nums: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。\n\n返回数轴上被车 任意部分 覆盖的整数点的数目。\n\n示例 1:\n\n输入:nums = [[3,6],[1,5],[4,7]]\n输出:7\n解释:从 1 到 7 的所有点都至少与一辆车相交,因此答案为 7 。\n\n示例 2:\n\n输入:nums = [[1,3],[5,8]]\n输出:7\n解释:1、2、3、5、6、7、8 共计 7 个点满足至少与一辆车相交,因此答案为 7 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * nums[i].length == 2\n * 1 <= starti <= endi <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfPoints(self, nums: List[List[int]]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [[3,6],[1,5],[4,7]] }\nassert my_solution.numberOfPoints(**test_input) == 7\n\ntest_input = { \"nums\": [[1,3],[5,8]] }\nassert my_solution.numberOfPoints(**test_input) == 7\n\ntest_input = { \"nums\": [[4,4],[9,10],[9,10],[3,8]] }\nassert my_solution.numberOfPoints(**test_input) == 8\n\ntest_input = { \"nums\": [[2,5],[3,8],[1,6],[4,10]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[2,3],[3,9],[5,7],[4,10],[9,10]] }\nassert my_solution.numberOfPoints(**test_input) == 9\n\ntest_input = { \"nums\": [[4,10]] }\nassert my_solution.numberOfPoints(**test_input) == 7\n\ntest_input = { \"nums\": [[1,9],[2,10],[6,7],[8,9],[5,8],[1,3]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[5,10],[3,8],[3,9]] }\nassert my_solution.numberOfPoints(**test_input) == 8\n\ntest_input = { \"nums\": [[2,3],[3,10],[5,8],[4,8],[2,7],[3,4],[3,10],[7,8]] }\nassert my_solution.numberOfPoints(**test_input) == 9\n\ntest_input = { \"nums\": [[1,3],[2,4],[6,6],[6,9],[2,10],[4,10],[3,6],[1,4],[1,3]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[4,10],[3,9],[3,5],[4,10],[7,10],[1,7],[7,9],[4,8]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[1,6],[6,7],[1,6],[1,3],[1,8],[2,9],[3,8],[1,9]] }\nassert my_solution.numberOfPoints(**test_input) == 9\n\ntest_input = { \"nums\": [[1,6],[8,10],[3,7],[6,10],[3,10],[1,10],[7,8]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[6,8],[2,8],[3,9],[3,5],[6,10],[1,2],[5,5]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[4,5],[5,9],[2,3],[5,10],[1,9],[1,8],[2,9],[2,10]] }\nassert my_solution.numberOfPoints(**test_input) == 10\n\ntest_input = { \"nums\": [[8,9],[6,7],[6,9],[3,5],[7,10],[5,9],[10,10]] }\nassert m
|
|||
|
{"task_id": "weekly-contest-362-determine-if-a-cell-is-reachable-at-a-given-time", "url": "https://leetcode.com/problems/determine-if-a-cell-is-reachable-at-a-given-time", "title": "determine-if-a-cell-is-reachable-at-a-given-time", "meta": {"questionId": "3056", "questionFrontendId": "2849", "title": "Determine if a Cell Is Reachable at a Given Time", "titleSlug": "determine-if-a-cell-is-reachable-at-a-given-time", "isPaidOnly": false, "difficulty": "Medium", "likes": 782, "dislikes": 730, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你四个整数 sx、sy、fx、fy 以及一个 非负整数 t 。\n\n在一个无限的二维网格中,你从单元格 (sx, sy) 开始出发。每一秒,你 必须 移动到任一与之前所处单元格相邻的单元格中。\n\n如果你能在 恰好 t 秒 后到达单元格 (fx, fy) ,返回 true ;否则,返回 false 。\n\n单元格的 相邻单元格 是指该单元格周围与其至少共享一个角的 8 个单元格。你可以多次访问同一个单元格。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/05/example2.svg]\n\n输入:sx = 2, sy = 4, fx = 7, fy = 7, t = 6\n输出:true\n解释:从单元格 (2, 4) 开始出发,穿过上图标注的单元格,可以在恰好 6 秒后到达单元格 (7, 7) 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/05/example1.svg]\n\n输入:sx = 3, sy = 1, fx = 7, fy = 3, t = 3\n输出:false\n解释:从单元格 (3, 1) 开始出发,穿过上图标注的单元格,至少需要 4 秒后到达单元格 (7, 3) 。 因此,无法在 3 秒后到达单元格 (7, 3) 。\n\n\n提示:\n\n * 1 <= sx, sy, fx, fy <= 109\n * 0 <= t <= 109\n\"\"\"\nclass Solution:\n def isReachableAtTime(self, sx: int, sy: int, fx: int, fy: int, t: int) -> bool:\n ", "prompt_sft": "给你四个整数 sx、sy、fx、fy 以及一个 非负整数 t 。\n\n在一个无限的二维网格中,你从单元格 (sx, sy) 开始出发。每一秒,你 必须 移动到任一与之前所处单元格相邻的单元格中。\n\n如果你能在 恰好 t 秒 后到达单元格 (fx, fy) ,返回 true ;否则,返回 false 。\n\n单元格的 相邻单元格 是指该单元格周围与其至少共享一个角的 8 个单元格。你可以多次访问同一个单元格。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/05/example2.svg]\n\n输入:sx = 2, sy = 4, fx = 7, fy = 7, t = 6\n输出:true\n解释:从单元格 (2, 4) 开始出发,穿过上图标注的单元格,可以在恰好 6 秒后到达单元格 (7, 7) 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/05/example1.svg]\n\n输入:sx = 3, sy = 1, fx = 7, fy = 3, t = 3\n输出:false\n解释:从单元格 (3, 1) 开始出发,穿过上图标注的单元格,至少需要 4 秒后到达单元格 (7, 3) 。 因此,无法在 3 秒后到达单元格 (7, 3) 。\n\n\n提示:\n\n * 1 <= sx, sy, fx, fy <= 109\n * 0 <= t <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def isReachableAtTime(self, sx: int, sy: int, fx: int, fy: int, t: int) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"sx\": 3, \"sy\": 1, \"fx\": 7, \"fy\": 3, \"t\": 3 }\nassert my_solution.isReachableAtTime(**test_input) == False\n\ntest_input = { \"sx\": 2, \"sy\": 4, \"fx\": 7, \"fy\": 7, \"t\": 6 }\nassert my_solution.isReachableAtTime(**test_input) == True\n\ntest_input = { \"sx\": 1, \"sy\": 1, \"fx\": 1, \"fy\": 2, \"t\": 0 }\nassert my_solution.isReachableAtTime(**test_input) == False\n\ntest_input = { \"sx\": 1, \"sy\": 1, \"fx\": 2, \"fy\": 4, \"t\": 0 }\nassert my_solution.isReachableAtTime(**test_input) == False\n\ntest_input = { \"sx\": 1, \"sy\": 1, \"fx\": 3, \"fy\": 4, \"t\": 1 }\nassert my_solution.isReachableAtTime(**test_input) == False\n\ntest_input = { \"sx\": 1, \"sy\": 1, \"fx\": 3, \"fy\": 5, \"t\": 1 }\nassert my_solution.isReachableAtTime(**test_input) == False\n\ntest_input = { \"sx\": 1, \"sy\": 1, \"fx\": 1, \"fy\": 1, \"t\": 3 }\nas
|
|||
|
{"task_id": "weekly-contest-362-minimum-moves-to-spread-stones-over-grid", "url": "https://leetcode.com/problems/minimum-moves-to-spread-stones-over-grid", "title": "minimum-moves-to-spread-stones-over-grid", "meta": {"questionId": "3092", "questionFrontendId": "2850", "title": "Minimum Moves to Spread Stones Over Grid", "titleSlug": "minimum-moves-to-spread-stones-over-grid", "isPaidOnly": false, "difficulty": "Medium", "likes": 419, "dislikes": 43, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个大小为 3 * 3 ,下标从 0 开始的二维整数矩阵 grid ,分别表示每一个格子里石头的数目。网格图中总共恰好有 9 个石头,一个格子里可能会有 多个 石头。\n\n每一次操作中,你可以将一个石头从它当前所在格子移动到一个至少有一条公共边的相邻格子。\n\n请你返回每个格子恰好有一个石头的 最少移动次数 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/23/example1-3.svg]\n\n输入:grid = [[1,1,0],[1,1,1],[1,2,1]]\n输出:3\n解释:让每个格子都有一个石头的一个操作序列为:\n1 - 将一个石头从格子 (2,1) 移动到 (2,2) 。\n2 - 将一个石头从格子 (2,2) 移动到 (1,2) 。\n3 - 将一个石头从格子 (1,2) 移动到 (0,2) 。\n总共需要 3 次操作让每个格子都有一个石头。\n让每个格子都有一个石头的最少操作次数为 3 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/23/example2-2.svg]\n\n输入:grid = [[1,3,0],[1,0,0],[1,0,3]]\n输出:4\n解释:让每个格子都有一个石头的一个操作序列为:\n1 - 将一个石头从格子 (0,1) 移动到 (0,2) 。\n2 - 将一个石头从格子 (0,1) 移动到 (1,1) 。\n3 - 将一个石头从格子 (2,2) 移动到 (1,2) 。\n4 - 将一个石头从格子 (2,2) 移动到 (2,1) 。\n总共需要 4 次操作让每个格子都有一个石头。\n让每个格子都有一个石头的最少操作次数为 4 。\n\n\n提示:\n\n * grid.length == grid[i].length == 3\n * 0 <= grid[i][j] <= 9\n * grid 中元素之和为 9 。\n\"\"\"\nclass Solution:\n def minimumMoves(self, grid: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个大小为 3 * 3 ,下标从 0 开始的二维整数矩阵 grid ,分别表示每一个格子里石头的数目。网格图中总共恰好有 9 个石头,一个格子里可能会有 多个 石头。\n\n每一次操作中,你可以将一个石头从它当前所在格子移动到一个至少有一条公共边的相邻格子。\n\n请你返回每个格子恰好有一个石头的 最少移动次数 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/23/example1-3.svg]\n\n输入:grid = [[1,1,0],[1,1,1],[1,2,1]]\n输出:3\n解释:让每个格子都有一个石头的一个操作序列为:\n1 - 将一个石头从格子 (2,1) 移动到 (2,2) 。\n2 - 将一个石头从格子 (2,2) 移动到 (1,2) 。\n3 - 将一个石头从格子 (1,2) 移动到 (0,2) 。\n总共需要 3 次操作让每个格子都有一个石头。\n让每个格子都有一个石头的最少操作次数为 3 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/23/example2-2.svg]\n\n输入:grid = [[1,3,0],[1,0,0],[1,0,3]]\n输出:4\n解释:让每个格子都有一个石头的一个操作序列为:\n1 - 将一个石头从格子 (0,1) 移动到 (0,2) 。\n2 - 将一个石头从格子 (0,1) 移动到 (1,1) 。\n3 - 将一个石头从格子 (2,2) 移动到 (1,2) 。\n4 - 将一个石头从格子 (2,2) 移动到 (2,1) 。\n总共需要 4 次操作让每个格子都有一个石头。\n让每个格子都有一个石头的最少操作次数为 4 。\n\n\n提示:\n\n * grid.length == grid[i].length == 3\n * 0 <= grid[i][j] <= 9\n * grid 中元素之和为 9 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumMoves(self, grid: List[List[int]]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"grid\": [[1,1,0],[1,1,1],[1,2,1]] }\nassert my
|
|||
|
{"task_id": "weekly-contest-362-string-transformation", "url": "https://leetcode.com/problems/string-transformation", "title": "string-transformation", "meta": {"questionId": "3024", "questionFrontendId": "2851", "title": "String Transformation", "titleSlug": "string-transformation", "isPaidOnly": false, "difficulty": "Hard", "likes": 140, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个长度都为 n 的字符串 s 和 t 。你可以对字符串 s 执行以下操作:\n\n * 将 s 长度为 l (0 < l < n)的 后缀字符串 删除,并将它添加在 s 的开头。\n 比方说,s = 'abcd' ,那么一次操作中,你可以删除后缀 'cd' ,并将它添加到 s 的开头,得到 s = 'cdab' 。\n\n给你一个整数 k ,请你返回 恰好 k 次操作将 s 变为 t 的方案数。\n\n由于答案可能很大,返回答案对 109 + 7 取余 后的结果。\n\n示例 1:\n\n输入:s = \"abcd\", t = \"cdab\", k = 2\n输出:2\n解释:\n第一种方案:\n第一次操作,选择 index = 3 开始的后缀,得到 s = \"dabc\" 。\n第二次操作,选择 index = 3 开始的后缀,得到 s = \"cdab\" 。\n\n第二种方案:\n第一次操作,选择 index = 1 开始的后缀,得到 s = \"bcda\" 。\n第二次操作,选择 index = 1 开始的后缀,得到 s = \"cdab\" 。\n\n示例 2:\n\n输入:s = \"ababab\", t = \"ababab\", k = 1\n输出:2\n解释:\n第一种方案:\n选择 index = 2 开始的后缀,得到 s = \"ababab\" 。\n\n第二种方案:\n选择 index = 4 开始的后缀,得到 s = \"ababab\" 。\n\n\n提示:\n\n * 2 <= s.length <= 5 * 105\n * 1 <= k <= 1015\n * s.length == t.length\n * s 和 t 都只包含小写英文字母。\n\"\"\"\nclass Solution:\n def numberOfWays(self, s: str, t: str, k: int) -> int:\n ", "prompt_sft": "给你两个长度都为 n 的字符串 s 和 t 。你可以对字符串 s 执行以下操作:\n\n * 将 s 长度为 l (0 < l < n)的 后缀字符串 删除,并将它添加在 s 的开头。\n 比方说,s = 'abcd' ,那么一次操作中,你可以删除后缀 'cd' ,并将它添加到 s 的开头,得到 s = 'cdab' 。\n\n给你一个整数 k ,请你返回 恰好 k 次操作将 s 变为 t 的方案数。\n\n由于答案可能很大,返回答案对 109 + 7 取余 后的结果。\n\n示例 1:\n\n输入:s = \"abcd\", t = \"cdab\", k = 2\n输出:2\n解释:\n第一种方案:\n第一次操作,选择 index = 3 开始的后缀,得到 s = \"dabc\" 。\n第二次操作,选择 index = 3 开始的后缀,得到 s = \"cdab\" 。\n\n第二种方案:\n第一次操作,选择 index = 1 开始的后缀,得到 s = \"bcda\" 。\n第二次操作,选择 index = 1 开始的后缀,得到 s = \"cdab\" 。\n\n示例 2:\n\n输入:s = \"ababab\", t = \"ababab\", k = 1\n输出:2\n解释:\n第一种方案:\n选择 index = 2 开始的后缀,得到 s = \"ababab\" 。\n\n第二种方案:\n选择 index = 4 开始的后缀,得到 s = \"ababab\" 。\n\n\n提示:\n\n * 2 <= s.length <= 5 * 105\n * 1 <= k <= 1015\n * s.length == t.length\n * s 和 t 都只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfWays(self, s: str, t: str, k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"abcd\", \"t\": \"cdab\", \"k\": 2 }\nassert my_solution.numberOfWays(**test_input) == 2\n\ntest_input = { \"s\": \"ababab\", \"t\": \"ababab\", \"k\": 1 }\nassert my_solution.numberOfWays(**test_input) == 2\n\ntest_input = { \"s\": \"goxoq\", \"t\": \"dfqgl\", \"k\": 244326024901249 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"s\": \"ceoceo\", \"t\": \"eoceoc\", \"k\": 4 }\nassert my_solution.numberOfWays(**test_input) == 208\n\ntest_input = { \"s\": \"ib\", \"t\": \"ib\", \"k\": 10 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"s\": \"ttttttt\", \"t\": \"ttttttt\", \"k\"
|
|||
|
{"task_id": "weekly-contest-361-count-symmetric-integers", "url": "https://leetcode.com/problems/count-symmetric-integers", "title": "count-symmetric-integers", "meta": {"questionId": "2998", "questionFrontendId": "2843", "title": " Count Symmetric Integers", "titleSlug": "count-symmetric-integers", "isPaidOnly": false, "difficulty": "Easy", "likes": 210, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数 low 和 high 。\n\n对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字之和相等,则认为这个数字是一个对称整数。\n\n返回在 [low, high] 范围内的 对称整数的数目 。\n\n示例 1:\n\n输入:low = 1, high = 100\n输出:9\n解释:在 1 到 100 范围内共有 9 个对称整数:11、22、33、44、55、66、77、88 和 99 。\n\n示例 2:\n\n输入:low = 1200, high = 1230\n输出:4\n解释:在 1200 到 1230 范围内共有 4 个对称整数:1203、1212、1221 和 1230 。\n\n\n提示:\n\n * 1 <= low <= high <= 104\n\"\"\"\nclass Solution:\n def countSymmetricIntegers(self, low: int, high: int) -> int:\n ", "prompt_sft": "给你两个正整数 low 和 high 。\n\n对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字之和相等,则认为这个数字是一个对称整数。\n\n返回在 [low, high] 范围内的 对称整数的数目 。\n\n示例 1:\n\n输入:low = 1, high = 100\n输出:9\n解释:在 1 到 100 范围内共有 9 个对称整数:11、22、33、44、55、66、77、88 和 99 。\n\n示例 2:\n\n输入:low = 1200, high = 1230\n输出:4\n解释:在 1200 到 1230 范围内共有 4 个对称整数:1203、1212、1221 和 1230 。\n\n\n提示:\n\n * 1 <= low <= high <= 104\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countSymmetricIntegers(self, low: int, high: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"low\": 1, \"high\": 100 }\nassert my_solution.countSymmetricIntegers(**test_input) == 9\n\ntest_input = { \"low\": 1200, \"high\": 1230 }\nassert my_solution.countSymmetricIntegers(**test_input) == 4\n\ntest_input = { \"low\": 1, \"high\": 1 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 2 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 3 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 4 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 5 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 6 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 7 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 8 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 9 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 10 }\nassert my_solution.countSymmetricIntegers(**test_input) == 0\n\ntest_input = { \"low\": 1, \"high\": 11 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 12 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 13 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 14 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 15 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 16 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 17 }\nassert my_solution.countSymmetricIntegers(**test_input) == 1\n\ntest_input = { \"low\": 1, \"high\": 18
|
|||
|
{"task_id": "weekly-contest-361-minimum-operations-to-make-a-special-number", "url": "https://leetcode.com/problems/minimum-operations-to-make-a-special-number", "title": "minimum-operations-to-make-a-special-number", "meta": {"questionId": "3046", "questionFrontendId": "2844", "title": "Minimum Operations to Make a Special Number", "titleSlug": "minimum-operations-to-make-a-special-number", "isPaidOnly": false, "difficulty": "Medium", "likes": 317, "dislikes": 48, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串 num ,表示一个非负整数。\n\n在一次操作中,您可以选择 num 的任意一位数字并将其删除。请注意,如果你删除 num 中的所有数字,则 num 变为 0。\n\n返回最少需要多少次操作可以使 num 变成特殊数字。\n\n如果整数 x 能被 25 整除,则该整数 x 被认为是特殊数字。\n\n\n示例 1:\n\n输入:num = \"2245047\"\n输出:2\n解释:删除数字 num[5] 和 num[6] ,得到数字 \"22450\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 2 位数字。\n\n示例 2:\n\n输入:num = \"2908305\"\n输出:3\n解释:删除 num[3]、num[4] 和 num[6] ,得到数字 \"2900\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 3 位数字。\n\n示例 3:\n\n输入:num = \"10\"\n输出:1\n解释:删除 num[0] ,得到数字 \"0\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 1 位数字。\n\n\n提示\n\n * 1 <= num.length <= 100\n * num 仅由数字 '0' 到 '9' 组成\n * num 不含任何前导零\n\"\"\"\nclass Solution:\n def minimumOperations(self, num: str) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串 num ,表示一个非负整数。\n\n在一次操作中,您可以选择 num 的任意一位数字并将其删除。请注意,如果你删除 num 中的所有数字,则 num 变为 0。\n\n返回最少需要多少次操作可以使 num 变成特殊数字。\n\n如果整数 x 能被 25 整除,则该整数 x 被认为是特殊数字。\n\n\n示例 1:\n\n输入:num = \"2245047\"\n输出:2\n解释:删除数字 num[5] 和 num[6] ,得到数字 \"22450\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 2 位数字。\n\n示例 2:\n\n输入:num = \"2908305\"\n输出:3\n解释:删除 num[3]、num[4] 和 num[6] ,得到数字 \"2900\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 3 位数字。\n\n示例 3:\n\n输入:num = \"10\"\n输出:1\n解释:删除 num[0] ,得到数字 \"0\" ,可以被 25 整除。\n可以证明要使数字变成特殊数字,最少需要删除 1 位数字。\n\n\n提示\n\n * 1 <= num.length <= 100\n * num 仅由数字 '0' 到 '9' 组成\n * num 不含任何前导零\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumOperations(self, num: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"num\": \"2245047\" }\nassert my_solution.minimumOperations(**test_input) == 2\n\ntest_input = { \"num\": \"2908305\" }\nassert my_solution.minimumOperations(**test_input) == 3\n\ntest_input = { \"num\": \"10\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"1\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"2\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"3\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"4\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"5\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"6\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\": \"7\" }\nassert my_solution.minimumOperations(**test_input) == 1\n\ntest_input = { \"num\
|
|||
|
{"task_id": "weekly-contest-361-count-of-interesting-subarrays", "url": "https://leetcode.com/problems/count-of-interesting-subarrays", "title": "count-of-interesting-subarrays", "meta": {"questionId": "2915", "questionFrontendId": "2845", "title": "Count of Interesting Subarrays", "titleSlug": "count-of-interesting-subarrays", "isPaidOnly": false, "difficulty": "Medium", "likes": 449, "dislikes": 62, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums ,以及整数 modulo 和整数 k 。\n\n请你找出并统计数组中 趣味子数组 的数目。\n\n如果 子数组 nums[l..r] 满足下述条件,则称其为 趣味子数组 :\n\n * 在范围 [l, r] 内,设 cnt 为满足 nums[i] % modulo == k 的索引 i 的数量。并且 cnt % modulo == k 。\n\n以整数形式表示并返回趣味子数组的数目。\n\n注意:子数组是数组中的一个连续非空的元素序列。\n\n示例 1:\n\n输入:nums = [3,2,4], modulo = 2, k = 1\n输出:3\n解释:在这个示例中,趣味子数组分别是:\n子数组 nums[0..0] ,也就是 [3] 。\n- 在范围 [0, 0] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n子数组 nums[0..1] ,也就是 [3,2] 。\n- 在范围 [0, 1] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n子数组 nums[0..2] ,也就是 [3,2,4] 。\n- 在范围 [0, 2] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n可以证明不存在其他趣味子数组。因此,答案为 3 。\n\n示例 2:\n\n输入:nums = [3,1,9,6], modulo = 3, k = 0\n输出:2\n解释:在这个示例中,趣味子数组分别是:\n子数组 nums[0..3] ,也就是 [3,1,9,6] 。\n- 在范围 [0, 3] 内,只存在 3 个下标 i = 0, 2, 3 满足 nums[i] % modulo == k 。\n- 因此 cnt = 3 ,且 cnt % modulo == k 。\n子数组 nums[1..1] ,也就是 [1] 。\n- 在范围 [1, 1] 内,不存在下标满足 nums[i] % modulo == k 。\n- 因此 cnt = 0 ,且 cnt % modulo == k 。\n可以证明不存在其他趣味子数组,因此答案为 2 。\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n * 1 <= modulo <= 109\n * 0 <= k < modulo\n\"\"\"\nclass Solution:\n def countInterestingSubarrays(self, nums: List[int], modulo: int, k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums ,以及整数 modulo 和整数 k 。\n\n请你找出并统计数组中 趣味子数组 的数目。\n\n如果 子数组 nums[l..r] 满足下述条件,则称其为 趣味子数组 :\n\n * 在范围 [l, r] 内,设 cnt 为满足 nums[i] % modulo == k 的索引 i 的数量。并且 cnt % modulo == k 。\n\n以整数形式表示并返回趣味子数组的数目。\n\n注意:子数组是数组中的一个连续非空的元素序列。\n\n示例 1:\n\n输入:nums = [3,2,4], modulo = 2, k = 1\n输出:3\n解释:在这个示例中,趣味子数组分别是:\n子数组 nums[0..0] ,也就是 [3] 。\n- 在范围 [0, 0] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n子数组 nums[0..1] ,也就是 [3,2] 。\n- 在范围 [0, 1] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n子数组 nums[0..2] ,也就是 [3,2,4] 。\n- 在范围 [0, 2] 内,只存在 1 个下标 i = 0 满足 nums[i] % modulo == k 。\n- 因此 cnt = 1 ,且 cnt % modulo == k 。\n可以证明不存在其他趣味子数组。因此,答案为 3 。\n\n示例 2:\n\n输入:nums = [3,1,9,6], modulo = 3, k = 0\n输出:2\n解释:在这个示例中,趣味子数组分别是:\n子数组 nums[0..3] ,也就是 [3,1,9,6] 。\n- 在范围 [0, 3] 内,只存在 3 个下标 i = 0, 2, 3 满足 nums[i] % modulo == k 。\n- 因此 cnt = 3 ,且 cnt % modulo == k 。\n子数组 nums[1..1] ,也就是 [1] 。\n
|
|||
|
{"task_id": "weekly-contest-361-minimum-edge-weight-equilibrium-queries-in-a-tree", "url": "https://leetcode.com/problems/minimum-edge-weight-equilibrium-queries-in-a-tree", "title": "minimum-edge-weight-equilibrium-queries-in-a-tree", "meta": {"questionId": "3079", "questionFrontendId": "2846", "title": "Minimum Edge Weight Equilibrium Queries in a Tree", "titleSlug": "minimum-edge-weight-equilibrium-queries-in-a-tree", "isPaidOnly": false, "difficulty": "Hard", "likes": 260, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。\n\n另给你一个长度为 m 的二维整数数组 queries ,其中 queries[i] = [ai, bi] 。对于每条查询,请你找出使从 ai 到 bi 路径上每条边的权重相等所需的 最小操作次数 。在一次操作中,你可以选择树上的任意一条边,并将其权重更改为任意值。\n\n注意:\n\n * 查询之间 相互独立 的,这意味着每条新的查询时,树都会回到 初始状态 。\n * 从 ai 到 bi的路径是一个由 不同 节点组成的序列,从节点 ai 开始,到节点 bi 结束,且序列中相邻的两个节点在树中共享一条边。\n\n返回一个长度为 m 的数组 answer ,其中 answer[i] 是第 i 条查询的答案。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/08/11/graph-6-1.png]\n\n输入:n = 7, edges = [[0,1,1],[1,2,1],[2,3,1],[3,4,2],[4,5,2],[5,6,2]], queries = [[0,3],[3,6],[2,6],[0,6]]\n输出:[0,0,1,3]\n解释:第 1 条查询,从节点 0 到节点 3 的路径中的所有边的权重都是 1 。因此,答案为 0 。\n第 2 条查询,从节点 3 到节点 6 的路径中的所有边的权重都是 2 。因此,答案为 0 。\n第 3 条查询,将边 [2,3] 的权重变更为 2 。在这次操作之后,从节点 2 到节点 6 的路径中的所有边的权重都是 2 。因此,答案为 1 。\n第 4 条查询,将边 [0,1]、[1,2]、[2,3] 的权重变更为 2 。在这次操作之后,从节点 0 到节点 6 的路径中的所有边的权重都是 2 。因此,答案为 3 。\n对于每条查询 queries[i] ,可以证明 answer[i] 是使从 ai 到 bi 的路径中的所有边的权重相等的最小操作次数。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/08/11/graph-9-1.png]\n\n输入:n = 8, edges = [[1,2,6],[1,3,4],[2,4,6],[2,5,3],[3,6,6],[3,0,8],[7,0,2]], queries = [[4,6],[0,4],[6,5],[7,4]]\n输出:[1,2,2,3]\n解释:第 1 条查询,将边 [1,3] 的权重变更为 6 。在这次操作之后,从节点 4 到节点 6 的路径中的所有边的权重都是 6 。因此,答案为 1 。\n第 2 条查询,将边 [0,3]、[3,1] 的权重变更为 6 。在这次操作之后,从节点 0 到节点 4 的路径中的所有边的权重都是 6 。因此,答案为 2 。\n第 3 条查询,将边 [1,3]、[5,2] 的权重变更为 6 。在这次操作之后,从节点 6 到节点 5 的路径中的所有边的权重都是 6 。因此,答案为 2 。\n第 4 条查询,将边 [0,7]、[0,3]、[1,3] 的权重变更为 6 。在这次操作之后,从节点 7 到节点 4 的路径中的所有边的权重都是 6 。因此,答案为 3 。\n对于每条查询 queries[i] ,可以证明 answer[i] 是使从 ai 到 bi 的路径中的所有边的权重相等的最小操作次数。\n\n\n提示:\n\n * 1 <= n <= 104\n * edges.length == n - 1\n * edges[i].length == 3\n * 0 <= ui, vi < n\n * 1 <= wi <= 26\n * 生成的输入满足 edges 表示一棵有效的树\n * 1 <= queries.length == m <= 2 * 104\n * queries[i].length == 2\n * 0 <= ai, bi < n\n\"\"\"\nclass Solution:\n def minOperationsQueries(self, n: int, edges: List[List[int]], queries: List[List[int]]) -> List[int]:\n ", "prompt_sft": "现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你
|
|||
|
{"task_id": "biweekly-contest-112-check-if-strings-can-be-made-equal-with-operations-i", "url": "https://leetcode.com/problems/check-if-strings-can-be-made-equal-with-operations-i", "title": "check-if-strings-can-be-made-equal-with-operations-i", "meta": {"questionId": "2999", "questionFrontendId": "2839", "title": "Check if Strings Can be Made Equal With Operations I", "titleSlug": "check-if-strings-can-be-made-equal-with-operations-i", "isPaidOnly": false, "difficulty": "Easy", "likes": 164, "dislikes": 20, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个字符串 s1 和 s2 ,两个字符串的长度都为 4 ,且只包含 小写 英文字母。\n\n你可以对两个字符串中的 任意一个 执行以下操作 任意 次:\n\n * 选择两个下标 i 和 j 且满足 j - i = 2 ,然后 交换 这个字符串中两个下标对应的字符。\n\n如果你可以让字符串 s1 和 s2 相等,那么返回 true ,否则返回 false 。\n\n示例 1:\n\n输入:s1 = \"abcd\", s2 = \"cdab\"\n输出:true\n解释: 我们可以对 s1 执行以下操作:\n- 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = \"cbad\" 。\n- 选择下标 i = 1 ,j = 3 ,得到字符串 s1 = \"cdab\" = s2 。\n\n示例 2:\n\n输入:s1 = \"abcd\", s2 = \"dacb\"\n输出:false\n解释:无法让两个字符串相等。\n\n\n提示:\n\n * s1.length == s2.length == 4\n * s1 和 s2 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def canBeEqual(self, s1: str, s2: str) -> bool:\n ", "prompt_sft": "给你两个字符串 s1 和 s2 ,两个字符串的长度都为 4 ,且只包含 小写 英文字母。\n\n你可以对两个字符串中的 任意一个 执行以下操作 任意 次:\n\n * 选择两个下标 i 和 j 且满足 j - i = 2 ,然后 交换 这个字符串中两个下标对应的字符。\n\n如果你可以让字符串 s1 和 s2 相等,那么返回 true ,否则返回 false 。\n\n示例 1:\n\n输入:s1 = \"abcd\", s2 = \"cdab\"\n输出:true\n解释: 我们可以对 s1 执行以下操作:\n- 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = \"cbad\" 。\n- 选择下标 i = 1 ,j = 3 ,得到字符串 s1 = \"cdab\" = s2 。\n\n示例 2:\n\n输入:s1 = \"abcd\", s2 = \"dacb\"\n输出:false\n解释:无法让两个字符串相等。\n\n\n提示:\n\n * s1.length == s2.length == 4\n * s1 和 s2 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def canBeEqual(self, s1: str, s2: str) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s1\": \"abcd\", \"s2\": \"cdab\" }\nassert my_solution.canBeEqual(**test_input) == True\n\ntest_input = { \"s1\": \"abcd\", \"s2\": \"dacb\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"gudo\", \"s2\": \"ogdu\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"bnxw\", \"s2\": \"bwxn\" }\nassert my_solution.canBeEqual(**test_input) == True\n\ntest_input = { \"s1\": \"zzon\", \"s2\": \"zozn\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"cmpr\", \"s2\": \"rmcp\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"qnde\", \"s2\": \"flsi\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"vofo\", \"s2\": \"oofv\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"xsvc\", \"s2\": \"vcxs\" }\nassert my_solution.canBeEqual(**test_input) == True\n\ntest_input = { \"s1\": \"hvsz\", \"s2\": \"hzsv\" }\nassert my_solution.canBeEqual(**test_input) == True\n\ntest_input = { \"s1\": \"ifjz\", \"s2\": \"jzfi\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"zrmq\", \"s2\": \"mrzq\" }\nassert my_solution.canBeEqual(**test_input) == True\n\ntest_input = { \"s1\": \"hazw\", \"s2\": \"pfmp\" }\nassert my_solution.canBeEqual(**test_input) == False\n\ntest_input = { \"s1\": \"kina\"
|
|||
|
{"task_id": "biweekly-contest-112-check-if-strings-can-be-made-equal-with-operations-ii", "url": "https://leetcode.com/problems/check-if-strings-can-be-made-equal-with-operations-ii", "title": "check-if-strings-can-be-made-equal-with-operations-ii", "meta": {"questionId": "2978", "questionFrontendId": "2840", "title": "Check if Strings Can be Made Equal With Operations II", "titleSlug": "check-if-strings-can-be-made-equal-with-operations-ii", "isPaidOnly": false, "difficulty": "Medium", "likes": 231, "dislikes": 2, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个字符串 s1 和 s2 ,两个字符串长度都为 n ,且只包含 小写 英文字母。\n\n你可以对两个字符串中的 任意一个 执行以下操作 任意 次:\n\n * 选择两个下标 i 和 j ,满足 i < j 且 j - i 是 偶数,然后 交换 这个字符串中两个下标对应的字符。\n\n如果你可以让字符串 s1 和 s2 相等,那么返回 true ,否则返回 false 。\n\n\n示例 1:\n\n输入:s1 = \"abcdba\", s2 = \"cabdab\"\n输出:true\n解释:我们可以对 s1 执行以下操作:\n- 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = \"cbadba\" 。\n- 选择下标 i = 2 ,j = 4 ,得到字符串 s1 = \"cbbdaa\" 。\n- 选择下标 i = 1 ,j = 5 ,得到字符串 s1 = \"cabdab\" = s2 。\n\n示例 2:\n\n输入:s1 = \"abe\", s2 = \"bea\"\n输出:false\n解释:无法让两个字符串相等。\n\n\n提示:\n\n * n == s1.length == s2.length\n * 1 <= n <= 105\n * s1 和 s2 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def checkStrings(self, s1: str, s2: str) -> bool:\n ", "prompt_sft": "给你两个字符串 s1 和 s2 ,两个字符串长度都为 n ,且只包含 小写 英文字母。\n\n你可以对两个字符串中的 任意一个 执行以下操作 任意 次:\n\n * 选择两个下标 i 和 j ,满足 i < j 且 j - i 是 偶数,然后 交换 这个字符串中两个下标对应的字符。\n\n如果你可以让字符串 s1 和 s2 相等,那么返回 true ,否则返回 false 。\n\n\n示例 1:\n\n输入:s1 = \"abcdba\", s2 = \"cabdab\"\n输出:true\n解释:我们可以对 s1 执行以下操作:\n- 选择下标 i = 0 ,j = 2 ,得到字符串 s1 = \"cbadba\" 。\n- 选择下标 i = 2 ,j = 4 ,得到字符串 s1 = \"cbbdaa\" 。\n- 选择下标 i = 1 ,j = 5 ,得到字符串 s1 = \"cabdab\" = s2 。\n\n示例 2:\n\n输入:s1 = \"abe\", s2 = \"bea\"\n输出:false\n解释:无法让两个字符串相等。\n\n\n提示:\n\n * n == s1.length == s2.length\n * 1 <= n <= 105\n * s1 和 s2 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def checkStrings(self, s1: str, s2: str) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s1\": \"abe\", \"s2\": \"bea\" }\nassert my_solution.checkStrings(**test_input) == False\n\ntest_input = { \"s1\": \"abcdba\", \"s2\": \"cabdab\" }\nassert my_solution.checkStrings(**test_input) == True\n\ntest_input = { \"s1\": \"ublnlasppynwgx\", \"s2\": \"ganplbuylnswpx\" }\nassert my_solution.checkStrings(**test_input) == True\n\ntest_input = { \"s1\": \"jghn\", \"s2\": \"jghn\" }\nassert my_solution.checkStrings(**test_input) == True\n\ntest_input = { \"s1\": \"pqtsprqmvi\", \"s2\": \"qrvqpitmps\" }\nassert my_solution.checkStrings(**test_input) == True\n\ntest_input = { \"s1\": \"aavizsxpqhxztrwi\", \"s2\": \"zvisqatzpaxhixwr\" }\nassert my_solution.checkStrings(**test_input) == False\n\ntest_input = { \"s1\": \"slmqqdbrwyvm\", \"s2\": \"qyldmmwsrqvb\" }\nassert my_solution.checkStrings(**test_input) == False\n\ntest_input = { \"s1\": \"shvqocguj\", \"s2\": \"vqsghujco\" }\nassert my_solution.checkStrings(**test_input) == False\n\ntest_input = { \"s1\": \"ktjpralqanofuuqsyal\", \"s2\": \"qjlornpasktfuyluaqa\" }\nassert my_solution.checkStrings(**test_input) == False\n\ntest_input = { \"s1\": \"mgflranpdjdkrh\", \"s2\": \"fpcgobmkdxbzyl\" }\nassert my_solution.checkStrin
|
|||
|
{"task_id": "biweekly-contest-112-maximum-sum-of-almost-unique-subarray", "url": "https://leetcode.com/problems/maximum-sum-of-almost-unique-subarray", "title": "maximum-sum-of-almost-unique-subarray", "meta": {"questionId": "2954", "questionFrontendId": "2841", "title": "Maximum Sum of Almost Unique Subarray", "titleSlug": "maximum-sum-of-almost-unique-subarray", "isPaidOnly": false, "difficulty": "Medium", "likes": 230, "dislikes": 133, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数数组 nums 和两个正整数 m 和 k 。\n\n请你返回 nums 中长度为 k 的 几乎唯一 子数组的 最大和 ,如果不存在几乎唯一子数组,请你返回 0 。\n\n如果 nums 的一个子数组有至少 m 个互不相同的元素,我们称它是 几乎唯一 子数组。\n\n子数组指的是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,6,7,3,1,7], m = 3, k = 4\n输出:18\n解释:总共有 3 个长度为 k = 4 的几乎唯一子数组。分别为 [2, 6, 7, 3] ,[6, 7, 3, 1] 和 [7, 3, 1, 7] 。这些子数组中,和最大的是 [2, 6, 7, 3] ,和为 18 。\n\n示例 2:\n\n输入:nums = [5,9,9,2,4,5,4], m = 1, k = 3\n输出:23\n解释:总共有 5 个长度为 k = 3 的几乎唯一子数组。分别为 [5, 9, 9] ,[9, 9, 2] ,[9, 2, 4] ,[2, 4, 5] 和 [4, 5, 4] 。这些子数组中,和最大的是 [5, 9, 9] ,和为 23 。\n\n示例 3:\n\n输入:nums = [1,2,1,2,1,2,1], m = 3, k = 3\n输出:0\n解释:输入数组中不存在长度为 k = 3 的子数组含有至少 m = 3 个互不相同元素的子数组。所以不存在几乎唯一子数组,最大和为 0 。\n\n\n提示:\n\n * 1 <= nums.length <= 2 * 104\n * 1 <= m <= k <= nums.length\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def maxSum(self, nums: List[int], m: int, k: int) -> int:\n ", "prompt_sft": "给你一个整数数组 nums 和两个正整数 m 和 k 。\n\n请你返回 nums 中长度为 k 的 几乎唯一 子数组的 最大和 ,如果不存在几乎唯一子数组,请你返回 0 。\n\n如果 nums 的一个子数组有至少 m 个互不相同的元素,我们称它是 几乎唯一 子数组。\n\n子数组指的是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,6,7,3,1,7], m = 3, k = 4\n输出:18\n解释:总共有 3 个长度为 k = 4 的几乎唯一子数组。分别为 [2, 6, 7, 3] ,[6, 7, 3, 1] 和 [7, 3, 1, 7] 。这些子数组中,和最大的是 [2, 6, 7, 3] ,和为 18 。\n\n示例 2:\n\n输入:nums = [5,9,9,2,4,5,4], m = 1, k = 3\n输出:23\n解释:总共有 5 个长度为 k = 3 的几乎唯一子数组。分别为 [5, 9, 9] ,[9, 9, 2] ,[9, 2, 4] ,[2, 4, 5] 和 [4, 5, 4] 。这些子数组中,和最大的是 [5, 9, 9] ,和为 23 。\n\n示例 3:\n\n输入:nums = [1,2,1,2,1,2,1], m = 3, k = 3\n输出:0\n解释:输入数组中不存在长度为 k = 3 的子数组含有至少 m = 3 个互不相同元素的子数组。所以不存在几乎唯一子数组,最大和为 0 。\n\n\n提示:\n\n * 1 <= nums.length <= 2 * 104\n * 1 <= m <= k <= nums.length\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxSum(self, nums: List[int], m: int, k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,6,7,3,1,7], \"m\": 3, \"k\": 4 }\nassert my_solution.maxSum(**test_input) == 18\n\ntest_input = { \"nums\": [5,9,9,2,4,5,4], \"m\": 1, \"k\": 3 }\nassert my_solution.maxSum(**test_input) == 23\n\ntest_input = { \"nums\": [1,2,1,2,1,2,1], \"m\": 3, \"k\": 3 }\nassert my_solution.maxSum(**test_input) == 0\n\ntest_input = { \"nums\": [1], \"m\": 1, \"k\": 1 }\nassert my_solution.maxSum(**test_input) == 1\n\ntest_input = { \"nums\": [1,1], \"m\": 2, \"k\": 2 }\nassert my_solution.maxSum(**test_input) == 0\n\ntest_input = { \"nums\": [1,1,1], \"m\": 1, \"k\": 1 }\nassert my_solution.maxSum(**test_input) == 1\n\ntest_input = { \"nu
|
|||
|
{"task_id": "biweekly-contest-112-count-k-subsequences-of-a-string-with-maximum-beauty", "url": "https://leetcode.com/problems/count-k-subsequences-of-a-string-with-maximum-beauty", "title": "count-k-subsequences-of-a-string-with-maximum-beauty", "meta": {"questionId": "3057", "questionFrontendId": "2842", "title": "Count K-Subsequences of a String With Maximum Beauty", "titleSlug": "count-k-subsequences-of-a-string-with-maximum-beauty", "isPaidOnly": false, "difficulty": "Hard", "likes": 286, "dislikes": 21, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 s 和一个整数 k 。\n\nk 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是 唯一 的,也就是说每个字符在子序列里只出现过一次。\n\n定义 f(c) 为字符 c 在 s 中出现的次数。\n\nk 子序列的 美丽值 定义为这个子序列中每一个字符 c 的 f(c) 之 和 。\n\n比方说,s = \"abbbdd\" 和 k = 2 ,我们有:\n\n * f('a') = 1, f('b') = 3, f('d') = 2\n * s 的部分 k 子序列为:\n * \"abbbdd\" -> \"ab\" ,美丽值为 f('a') + f('b') = 4\n * \"abbbdd\" -> \"ad\" ,美丽值为 f('a') + f('d') = 3\n * \"abbbdd\" -> \"bd\" ,美丽值为 f('b') + f('d') = 5\n\n请你返回一个整数,表示所有 k 子序列 里面 美丽值 是 最大值 的子序列数目。由于答案可能很大,将结果对 109 + 7 取余后返回。\n\n一个字符串的子序列指的是从原字符串里面删除一些字符(也可能一个字符也不删除),不改变剩下字符顺序连接得到的新字符串。\n\n注意:\n\n * f(c) 指的是字符 c 在字符串 s 的出现次数,不是在 k 子序列里的出现次数。\n * 两个 k 子序列如果有任何一个字符在原字符串中的下标不同,则它们是两个不同的子序列。所以两个不同的 k 子序列可能产生相同的字符串。\n\n示例 1:\n\n输入:s = \"bcca\", k = 2\n输出:4\n解释:s 中我们有 f('a') = 1 ,f('b') = 1 和 f('c') = 2 。\ns 的 k 子序列为:\nbcca ,美丽值为 f('b') + f('c') = 3\nbcca ,美丽值为 f('b') + f('c') = 3\nbcca ,美丽值为 f('b') + f('a') = 2\nbcca ,美丽值为 f('c') + f('a') = 3\nbcca ,美丽值为 f('c') + f('a') = 3\n总共有 4 个 k 子序列美丽值为最大值 3 。\n所以答案为 4 。\n\n示例 2:\n\n输入:s = \"abbcd\", k = 4\n输出:2\n解释:s 中我们有 f('a') = 1 ,f('b') = 2 ,f('c') = 1 和 f('d') = 1 。\ns 的 k 子序列为:\nabbcd ,美丽值为 f('a') + f('b') + f('c') + f('d') = 5\nabbcd ,美丽值为 f('a') + f('b') + f('c') + f('d') = 5\n总共有 2 个 k 子序列美丽值为最大值 5 。\n所以答案为 2 。\n\n\n提示:\n\n * 1 <= s.length <= 2 * 105\n * 1 <= k <= s.length\n * s 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def countKSubsequencesWithMaxBeauty(self, s: str, k: int) -> int:\n ", "prompt_sft": "给你一个字符串 s 和一个整数 k 。\n\nk 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是 唯一 的,也就是说每个字符在子序列里只出现过一次。\n\n定义 f(c) 为字符 c 在 s 中出现的次数。\n\nk 子序列的 美丽值 定义为这个子序列中每一个字符 c 的 f(c) 之 和 。\n\n比方说,s = \"abbbdd\" 和 k = 2 ,我们有:\n\n * f('a') = 1, f('b') = 3, f('d') = 2\n * s 的部分 k 子序列为:\n * \"abbbdd\" -> \"ab\" ,美丽值为 f('a') + f('b') = 4\n * \"abbbdd\" -> \"ad\" ,美丽值为 f('a') + f('d') = 3\n * \"abbbdd\" -> \"bd\" ,美丽值为 f('b') + f('d') = 5\n\n请你返回一个整数,表示所有 k 子序列 里面 美丽值 是 最大值 的子序列数目。由于答案可能很大,将结果对 109 + 7 取余后返回。\n\n一个字符串的子序列指的是从原字符串里面删除一些字符(也可能一个字符也不删除),不改变剩下字符顺序连接得到的新字符串。\n\n注意:\n\n * f(c) 指的是字符 c 在字符<E5AD97><E7ACA6>
|
|||
|
{"task_id": "weekly-contest-360-furthest-point-from-origin", "url": "https://leetcode.com/problems/furthest-point-from-origin", "title": "furthest-point-from-origin", "meta": {"questionId": "3019", "questionFrontendId": "2833", "title": "Furthest Point From Origin", "titleSlug": "furthest-point-from-origin", "isPaidOnly": false, "difficulty": "Easy", "likes": 203, "dislikes": 29, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 的字符串 moves ,该字符串仅由字符 'L'、'R' 和 '_' 组成。字符串表示你在一条原点为 0 的数轴上的若干次移动。\n\n你的初始位置就在原点(0),第 i 次移动过程中,你可以根据对应字符选择移动方向:\n\n * 如果 moves[i] = 'L' 或 moves[i] = '_' ,可以选择向左移动一个单位距离\n * 如果 moves[i] = 'R' 或 moves[i] = '_' ,可以选择向右移动一个单位距离\n\n移动 n 次之后,请你找出可以到达的距离原点 最远 的点,并返回 从原点到这一点的距离 。\n\n示例 1:\n\n输入:moves = \"L_RL__R\"\n输出:3\n解释:可以到达的距离原点 0 最远的点是 -3 ,移动的序列为 \"LLRLLLR\" 。\n\n示例 2:\n\n输入:moves = \"_R__LL_\"\n输出:5\n解释:可以到达的距离原点 0 最远的点是 -5 ,移动的序列为 \"LRLLLLL\" 。\n\n示例 3:\n\n输入:moves = \"_______\"\n输出:7\n解释:可以到达的距离原点 0 最远的点是 7 ,移动的序列为 \"RRRRRRR\" 。\n\n\n提示:\n\n * 1 <= moves.length == n <= 50\n * moves 仅由字符 'L'、'R' 和 '_' 组成\n\"\"\"\nclass Solution:\n def furthestDistanceFromOrigin(self, moves: str) -> int:\n ", "prompt_sft": "给你一个长度为 n 的字符串 moves ,该字符串仅由字符 'L'、'R' 和 '_' 组成。字符串表示你在一条原点为 0 的数轴上的若干次移动。\n\n你的初始位置就在原点(0),第 i 次移动过程中,你可以根据对应字符选择移动方向:\n\n * 如果 moves[i] = 'L' 或 moves[i] = '_' ,可以选择向左移动一个单位距离\n * 如果 moves[i] = 'R' 或 moves[i] = '_' ,可以选择向右移动一个单位距离\n\n移动 n 次之后,请你找出可以到达的距离原点 最远 的点,并返回 从原点到这一点的距离 。\n\n示例 1:\n\n输入:moves = \"L_RL__R\"\n输出:3\n解释:可以到达的距离原点 0 最远的点是 -3 ,移动的序列为 \"LLRLLLR\" 。\n\n示例 2:\n\n输入:moves = \"_R__LL_\"\n输出:5\n解释:可以到达的距离原点 0 最远的点是 -5 ,移动的序列为 \"LRLLLLL\" 。\n\n示例 3:\n\n输入:moves = \"_______\"\n输出:7\n解释:可以到达的距离原点 0 最远的点是 7 ,移动的序列为 \"RRRRRRR\" 。\n\n\n提示:\n\n * 1 <= moves.length == n <= 50\n * moves 仅由字符 'L'、'R' 和 '_' 组成\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def furthestDistanceFromOrigin(self, moves: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"moves\": \"L_RL__R\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 3\n\ntest_input = { \"moves\": \"_R__LL_\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 5\n\ntest_input = { \"moves\": \"_______\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 7\n\ntest_input = { \"moves\": \"L\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 1\n\ntest_input = { \"moves\": \"R\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 1\n\ntest_input = { \"moves\": \"_\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 1\n\ntest_input = { \"moves\": \"LL\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 2\n\ntest_input = { \"moves\": \"LR\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 0\n\ntest_input = { \"moves\": \"L_\" }\nassert my_solution.furthestDistanceFromOrigin(**test_input) == 2\n\ntest_input = { \"moves\": \"RL\" }\nassert my_solution.furthestDistanceFr
|
|||
|
{"task_id": "weekly-contest-360-find-the-minimum-possible-sum-of-a-beautiful-array", "url": "https://leetcode.com/problems/find-the-minimum-possible-sum-of-a-beautiful-array", "title": "find-the-minimum-possible-sum-of-a-beautiful-array", "meta": {"questionId": "3026", "questionFrontendId": "2834", "title": "Find the Minimum Possible Sum of a Beautiful Array", "titleSlug": "find-the-minimum-possible-sum-of-a-beautiful-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 276, "dislikes": 37, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数:n 和 target 。\n\n如果数组 nums 满足下述条件,则称其为 美丽数组 。\n\n * nums.length == n.\n * nums 由两两互不相同的正整数组成。\n * 在范围 [0, n-1] 内,不存在 两个 不同 下标 i 和 j ,使得 nums[i] + nums[j] == target 。\n\n返回符合条件的美丽数组所可能具备的 最小 和,并对结果进行取模 109 + 7。\n\n示例 1:\n\n输入:n = 2, target = 3\n输出:4\n解释:nums = [1,3] 是美丽数组。\n- nums 的长度为 n = 2 。\n- nums 由两两互不相同的正整数组成。\n- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。\n可以证明 4 是符合条件的美丽数组所可能具备的最小和。\n\n示例 2:\n\n输入:n = 3, target = 3\n输出:8\n解释:\nnums = [1,3,4] 是美丽数组。\n- nums 的长度为 n = 3 。\n- nums 由两两互不相同的正整数组成。\n- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。\n可以证明 8 是符合条件的美丽数组所可能具备的最小和。\n\n示例 3:\n\n输入:n = 1, target = 1\n输出:1\n解释:nums = [1] 是美丽数组。\n\n\n提示:\n\n * 1 <= n <= 109\n * 1 <= target <= 109\n\"\"\"\nclass Solution:\n def minimumPossibleSum(self, n: int, target: int) -> int:\n ", "prompt_sft": "给你两个正整数:n 和 target 。\n\n如果数组 nums 满足下述条件,则称其为 美丽数组 。\n\n * nums.length == n.\n * nums 由两两互不相同的正整数组成。\n * 在范围 [0, n-1] 内,不存在 两个 不同 下标 i 和 j ,使得 nums[i] + nums[j] == target 。\n\n返回符合条件的美丽数组所可能具备的 最小 和,并对结果进行取模 109 + 7。\n\n示例 1:\n\n输入:n = 2, target = 3\n输出:4\n解释:nums = [1,3] 是美丽数组。\n- nums 的长度为 n = 2 。\n- nums 由两两互不相同的正整数组成。\n- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。\n可以证明 4 是符合条件的美丽数组所可能具备的最小和。\n\n示例 2:\n\n输入:n = 3, target = 3\n输出:8\n解释:\nnums = [1,3,4] 是美丽数组。\n- nums 的长度为 n = 3 。\n- nums 由两两互不相同的正整数组成。\n- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。\n可以证明 8 是符合条件的美丽数组所可能具备的最小和。\n\n示例 3:\n\n输入:n = 1, target = 1\n输出:1\n解释:nums = [1] 是美丽数组。\n\n\n提示:\n\n * 1 <= n <= 109\n * 1 <= target <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumPossibleSum(self, n: int, target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 2, \"target\": 3 }\nassert my_solution.minimumPossibleSum(**test_input) == 4\n\ntest_input = { \"n\": 3, \"target\": 3 }\nassert my_solution.minimumPossibleSum(**test_input) == 8\n\ntest_input = { \"n\": 1, \"target\": 1 }\nassert my_solution.minimumPossibleSum(**test_input) == 1\n\ntest_input = { \"n\": 16, \"target\": 6 }\nassert my_solution.minimumPossibleSum(**test_input) == 162\n\ntest_input = { \"n\": 16, \"target\": 32 }\nassert my_solution.minimumPossibleSum(**test_input) == 136\n\ntest_input = { \"n\": 13, \"target\": 50 }\nassert my_solution.minimumPossibleSum(**test_input) == 91\n\ntest_input = { \"n\": 36, \"target\": 21 }\nassert my_solution.minimumPossibleSum(**test_input) == 926\n\ntest_input = { \"n\": 40, \"target\
|
|||
|
{"task_id": "weekly-contest-360-minimum-operations-to-form-subsequence-with-target-sum", "url": "https://leetcode.com/problems/minimum-operations-to-form-subsequence-with-target-sum", "title": "minimum-operations-to-form-subsequence-with-target-sum", "meta": {"questionId": "3025", "questionFrontendId": "2835", "title": "Minimum Operations to Form Subsequence With Target Sum", "titleSlug": "minimum-operations-to-form-subsequence-with-target-sum", "isPaidOnly": false, "difficulty": "Hard", "likes": 503, "dislikes": 125, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的数组 nums ,它包含 非负 整数,且全部为 2 的幂,同时给你一个整数 target 。\n\n一次操作中,你必须对数组做以下修改:\n\n * 选择数组中一个元素 nums[i] ,满足 nums[i] > 1 。\n * 将 nums[i] 从数组中删除。\n * 在 nums 的 末尾 添加 两个 数,值都为 nums[i] / 2 。\n\n你的目标是让 nums 的一个 子序列 的元素和等于 target ,请你返回达成这一目标的 最少操作次数 。如果无法得到这样的子序列,请你返回 -1 。\n\n数组中一个 子序列 是通过删除原数组中一些元素,并且不改变剩余元素顺序得到的剩余数组。\n\n示例 1:\n\n输入:nums = [1,2,8], target = 7\n输出:1\n解释:第一次操作中,我们选择元素 nums[2] 。数组变为 nums = [1,2,4,4] 。\n这时候,nums 包含子序列 [1,2,4] ,和为 7 。\n无法通过更少的操作得到和为 7 的子序列。\n\n示例 2:\n\n输入:nums = [1,32,1,2], target = 12\n输出:2\n解释:第一次操作中,我们选择元素 nums[1] 。数组变为 nums = [1,1,2,16,16] 。\n第二次操作中,我们选择元素 nums[3] 。数组变为 nums = [1,1,2,16,8,8] 。\n这时候,nums 包含子序列 [1,1,2,8] ,和为 12 。\n无法通过更少的操作得到和为 12 的子序列。\n\n示例 3:\n\n输入:nums = [1,32,1], target = 35\n输出:-1\n解释:无法得到和为 35 的子序列。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 230\n * nums 只包含非负整数,且均为 2 的幂。\n * 1 <= target < 231\n\"\"\"\nclass Solution:\n def minOperations(self, nums: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的数组 nums ,它包含 非负 整数,且全部为 2 的幂,同时给你一个整数 target 。\n\n一次操作中,你必须对数组做以下修改:\n\n * 选择数组中一个元素 nums[i] ,满足 nums[i] > 1 。\n * 将 nums[i] 从数组中删除。\n * 在 nums 的 末尾 添加 两个 数,值都为 nums[i] / 2 。\n\n你的目标是让 nums 的一个 子序列 的元素和等于 target ,请你返回达成这一目标的 最少操作次数 。如果无法得到这样的子序列,请你返回 -1 。\n\n数组中一个 子序列 是通过删除原数组中一些元素,并且不改变剩余元素顺序得到的剩余数组。\n\n示例 1:\n\n输入:nums = [1,2,8], target = 7\n输出:1\n解释:第一次操作中,我们选择元素 nums[2] 。数组变为 nums = [1,2,4,4] 。\n这时候,nums 包含子序列 [1,2,4] ,和为 7 。\n无法通过更少的操作得到和为 7 的子序列。\n\n示例 2:\n\n输入:nums = [1,32,1,2], target = 12\n输出:2\n解释:第一次操作中,我们选择元素 nums[1] 。数组变为 nums = [1,1,2,16,16] 。\n第二次操作中,我们选择元素 nums[3] 。数组变为 nums = [1,1,2,16,8,8] 。\n这时候,nums 包含子序列 [1,1,2,8] ,和为 12 。\n无法通过更少的操作得到和为 12 的子序列。\n\n示例 3:\n\n输入:nums = [1,32,1], target = 35\n输出:-1\n解释:无法得到和为 35 的子序列。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 230\n * nums 只包含非负整数,且均为 2 的幂。\n * 1 <= target < 231\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minOperations(self, nums: List[int], t
|
|||
|
{"task_id": "weekly-contest-360-maximize-value-of-function-in-a-ball-passing-game", "url": "https://leetcode.com/problems/maximize-value-of-function-in-a-ball-passing-game", "title": "maximize-value-of-function-in-a-ball-passing-game", "meta": {"questionId": "3032", "questionFrontendId": "2836", "title": "Maximize Value of Function in a Ball Passing Game", "titleSlug": "maximize-value-of-function-in-a-ball-passing-game", "isPaidOnly": false, "difficulty": "Hard", "likes": 202, "dislikes": 85, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 下标从 0 开始的整数数组 receiver 和一个整数 k 。\n\n总共有 n 名玩家,玩家 编号 互不相同,且为 [0, n - 1] 中的整数。这些玩家玩一个传球游戏,receiver[i] 表示编号为 i 的玩家会传球给编号为 receiver[i] 的玩家。玩家可以传球给自己,也就是说 receiver[i] 可能等于 i 。\n\n你需要从 n 名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 恰好 k 次。\n\n如果选择编号为 x 的玩家作为开始玩家,定义函数 f(x) 表示从编号为 x 的玩家开始,k 次传球内所有接触过球玩家的编号之 和 ,如果有玩家多次触球,则 累加多次 。换句话说, f(x) = x + receiver[x] + receiver[receiver[x]] + ... + receiver(k)[x] 。\n\n你的任务时选择开始玩家 x ,目的是 最大化 f(x) 。\n\n请你返回函数的 最大值 。\n\n注意:receiver 可能含有重复元素。\n\n示例 1:\n\n传递次数 传球者编号 接球者编号 x + 所有接球者编号 2 1 2 1 3 2 1 0 3 3 0 2 5 4 2 1 6\n\n\n输入:receiver = [2,0,1], k = 4\n输出:6\n解释:上表展示了从编号为 x = 2 开始的游戏过程。\n从表中可知,f(2) 等于 6 。\n6 是能得到最大的函数值。\n所以输出为 6 。\n\n示例 2:\n\n传递次数 传球者编号 接球者编号 x + 所有接球者编号 4 1 4 3 7 2 3 2 9 3 2 1 10\n\n\n输入:receiver = [1,1,1,2,3], k = 3\n输出:10\n解释:上表展示了从编号为 x = 4 开始的游戏过程。\n从表中可知,f(4) 等于 10 。\n10 是能得到最大的函数值。\n所以输出为 10 。\n\n\n提示:\n\n * 1 <= receiver.length == n <= 105\n * 0 <= receiver[i] <= n - 1\n * 1 <= k <= 1010\n\"\"\"\nclass Solution:\n def getMaxFunctionValue(self, receiver: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个长度为 n 下标从 0 开始的整数数组 receiver 和一个整数 k 。\n\n总共有 n 名玩家,玩家 编号 互不相同,且为 [0, n - 1] 中的整数。这些玩家玩一个传球游戏,receiver[i] 表示编号为 i 的玩家会传球给编号为 receiver[i] 的玩家。玩家可以传球给自己,也就是说 receiver[i] 可能等于 i 。\n\n你需要从 n 名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 恰好 k 次。\n\n如果选择编号为 x 的玩家作为开始玩家,定义函数 f(x) 表示从编号为 x 的玩家开始,k 次传球内所有接触过球玩家的编号之 和 ,如果有玩家多次触球,则 累加多次 。换句话说, f(x) = x + receiver[x] + receiver[receiver[x]] + ... + receiver(k)[x] 。\n\n你的任务时选择开始玩家 x ,目的是 最大化 f(x) 。\n\n请你返回函数的 最大值 。\n\n注意:receiver 可能含有重复元素。\n\n示例 1:\n\n传递次数 传球者编号 接球者编号 x + 所有接球者编号 2 1 2 1 3 2 1 0 3 3 0 2 5 4 2 1 6\n\n\n输入:receiver = [2,0,1], k = 4\n输出:6\n解释:上表展示了从编号为 x = 2 开始的游戏过程。\n从表中可知,f(2) 等于 6 。\n6 是能得到最大的函数值。\n所以输出为 6 。\n\n示例 2:\n\n传递次数 传球者编号 接球者编号 x + 所有接球者编号 4 1 4 3 7 2 3 2 9 3 2 1 10\n\n\n输入:receiver = [1,1,1,2,3], k = 3\n输出:10\n解释:上表展示了从编号为 x = 4 开始的游戏过程<E8BF87>
|
|||
|
{"task_id": "weekly-contest-359-check-if-a-string-is-an-acronym-of-words", "url": "https://leetcode.com/problems/check-if-a-string-is-an-acronym-of-words", "title": "check-if-a-string-is-an-acronym-of-words", "meta": {"questionId": "2977", "questionFrontendId": "2828", "title": "Check if a String Is an Acronym of Words", "titleSlug": "check-if-a-string-is-an-acronym-of-words", "isPaidOnly": false, "difficulty": "Easy", "likes": 257, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。\n\n如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,\"ab\" 可以由 [\"apple\", \"banana\"] 形成,但是无法从 [\"bear\", \"aardvark\"] 形成。\n\n如果 s 是 words 的首字母缩略词,返回 true ;否则,返回 false 。\n\n示例 1:\n\n输入:words = [\"alice\",\"bob\",\"charlie\"], s = \"abc\"\n输出:true\n解释:words 中 \"alice\"、\"bob\" 和 \"charlie\" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = \"abc\" 是首字母缩略词。\n\n示例 2:\n\n输入:words = [\"an\",\"apple\"], s = \"a\"\n输出:false\n解释:words 中 \"an\" 和 \"apple\" 的第一个字符分别是 'a' 和 'a'。\n串联这些字符形成的首字母缩略词是 \"aa\" 。\n因此,s = \"a\" 不是首字母缩略词。\n\n示例 3:\n\n输入:words = [\"never\",\"gonna\",\"give\",\"up\",\"on\",\"you\"], s = \"ngguoy\"\n输出:true\n解释:串联数组 words 中每个字符串的第一个字符,得到字符串 \"ngguoy\" 。\n因此,s = \"ngguoy\" 是首字母缩略词。\n\n\n提示:\n\n * 1 <= words.length <= 100\n * 1 <= words[i].length <= 10\n * 1 <= s.length <= 100\n * words[i] 和 s 由小写英文字母组成\n\"\"\"\nclass Solution:\n def isAcronym(self, words: List[str], s: str) -> bool:\n ", "prompt_sft": "给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。\n\n如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,\"ab\" 可以由 [\"apple\", \"banana\"] 形成,但是无法从 [\"bear\", \"aardvark\"] 形成。\n\n如果 s 是 words 的首字母缩略词,返回 true ;否则,返回 false 。\n\n示例 1:\n\n输入:words = [\"alice\",\"bob\",\"charlie\"], s = \"abc\"\n输出:true\n解释:words 中 \"alice\"、\"bob\" 和 \"charlie\" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = \"abc\" 是首字母缩略词。\n\n示例 2:\n\n输入:words = [\"an\",\"apple\"], s = \"a\"\n输出:false\n解释:words 中 \"an\" 和 \"apple\" 的第一个字符分别是 'a' 和 'a'。\n串联这些字符形成的首字母缩略词是 \"aa\" 。\n因此,s = \"a\" 不是首字母缩略词。\n\n示例 3:\n\n输入:words = [\"never\",\"gonna\",\"give\",\"up\",\"on\",\"you\"], s = \"ngguoy\"\n输出:true\n解释:串联数组 words 中每个字符串的第一个字符,得到字符串 \"ngguoy\" 。\n因此,s = \"ngguoy\" 是首字母缩略词。\n\n\n提示:\n\n * 1 <= words.length <= 100\n * 1 <= words[i].length <= 10\n * 1 <= s.length <= 100\n * words[i] 和 s 由小写英文字母组成\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def isAcronym(self, words: List[str], s: str) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"words\": [\"an\",\"apple\"], \"s\": \"a\" }\nassert my_solution.isAcronym(**test_input) == False\n\ntest_input = { \"words\": [\"alice\",\"bob\",\"charlie\"], \"s\": \"abc\" }\nassert my_solution.isAcronym(**test_input) == True\n\ntest_input = { \"words\": [\"never\",\"gonna\",\"give\",\"up\",\"on\",\"you\"], \"s\": \"ngguoy\" }\nassert my_solution.isAcronym(**test_input) == True\n\ntest_input = { \"words\": [\"ad\",\"uadhrwxki\"], \"s\": \"au\" }\nassert my_solution.isAcronym(**tes
|
|||
|
{"task_id": "weekly-contest-359-determine-the-minimum-sum-of-a-k-avoiding-array", "url": "https://leetcode.com/problems/determine-the-minimum-sum-of-a-k-avoiding-array", "title": "determine-the-minimum-sum-of-a-k-avoiding-array", "meta": {"questionId": "2811", "questionFrontendId": "2829", "title": "Determine the Minimum Sum of a k-avoiding Array", "titleSlug": "determine-the-minimum-sum-of-a-k-avoiding-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 305, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个整数 n 和 k 。\n\n对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。\n\n返回长度为 n 的 k-avoiding 数组的可能的最小总和。\n\n示例 1:\n\n输入:n = 5, k = 4\n输出:18\n解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。\n可以证明不存在总和小于 18 的 k-avoiding 数组。\n\n示例 2:\n\n输入:n = 2, k = 6\n输出:3\n解释:可以构造数组 [1,2] ,其元素总和为 3 。\n可以证明不存在总和小于 3 的 k-avoiding 数组。\n\n\n提示:\n\n * 1 <= n, k <= 50\n\"\"\"\nclass Solution:\n def minimumSum(self, n: int, k: int) -> int:\n ", "prompt_sft": "给你两个整数 n 和 k 。\n\n对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。\n\n返回长度为 n 的 k-avoiding 数组的可能的最小总和。\n\n示例 1:\n\n输入:n = 5, k = 4\n输出:18\n解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。\n可以证明不存在总和小于 18 的 k-avoiding 数组。\n\n示例 2:\n\n输入:n = 2, k = 6\n输出:3\n解释:可以构造数组 [1,2] ,其元素总和为 3 。\n可以证明不存在总和小于 3 的 k-avoiding 数组。\n\n\n提示:\n\n * 1 <= n, k <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumSum(self, n: int, k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 5, \"k\": 4 }\nassert my_solution.minimumSum(**test_input) == 18\n\ntest_input = { \"n\": 2, \"k\": 6 }\nassert my_solution.minimumSum(**test_input) == 3\n\ntest_input = { \"n\": 1, \"k\": 1 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 2 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 3 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 4 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 5 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 6 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 7 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 8 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 9 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 10 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 11 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 12 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 13 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 14 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 15 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 16 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 17 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 18 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 19 }\nassert my_solution.minimumSum(**test_input) == 1\n\ntest_input = { \"n\": 1, \"k\": 20 }\nassert my_solution.minimumSum
|
|||
|
{"task_id": "weekly-contest-359-maximize-the-profit-as-the-salesman", "url": "https://leetcode.com/problems/maximize-the-profit-as-the-salesman", "title": "maximize-the-profit-as-the-salesman", "meta": {"questionId": "2979", "questionFrontendId": "2830", "title": "Maximize the Profit as the Salesman", "titleSlug": "maximize-the-profit-as-the-salesman", "isPaidOnly": false, "difficulty": "Medium", "likes": 603, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数 n 表示数轴上的房屋数量,编号从 0 到 n - 1 。\n\n另给你一个二维整数数组 offers ,其中 offers[i] = [starti, endi, goldi] 表示第 i 个买家想要以 goldi 枚金币的价格购买从 starti 到 endi 的所有房屋。\n\n作为一名销售,你需要有策略地选择并销售房屋使自己的收入最大化。\n\n返回你可以赚取的金币的最大数目。\n\n注意 同一所房屋不能卖给不同的买家,并且允许保留一些房屋不进行出售。\n\n示例 1:\n\n输入:n = 5, offers = [[0,0,1],[0,2,2],[1,3,2]]\n输出:3\n解释:\n有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。\n将位于 [0,0] 范围内的房屋以 1 金币的价格出售给第 1 位买家,并将位于 [1,3] 范围内的房屋以 2 金币的价格出售给第 3 位买家。\n可以证明我们最多只能获得 3 枚金币。\n\n示例 2:\n\n输入:n = 5, offers = [[0,0,1],[0,2,10],[1,3,2]]\n输出:10\n解释:有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。\n将位于 [0,2] 范围内的房屋以 10 金币的价格出售给第 2 位买家。\n可以证明我们最多只能获得 10 枚金币。\n\n提示:\n\n * 1 <= n <= 105\n * 1 <= offers.length <= 105\n * offers[i].length == 3\n * 0 <= starti <= endi <= n - 1\n * 1 <= goldi <= 103\n\"\"\"\nclass Solution:\n def maximizeTheProfit(self, n: int, offers: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个整数 n 表示数轴上的房屋数量,编号从 0 到 n - 1 。\n\n另给你一个二维整数数组 offers ,其中 offers[i] = [starti, endi, goldi] 表示第 i 个买家想要以 goldi 枚金币的价格购买从 starti 到 endi 的所有房屋。\n\n作为一名销售,你需要有策略地选择并销售房屋使自己的收入最大化。\n\n返回你可以赚取的金币的最大数目。\n\n注意 同一所房屋不能卖给不同的买家,并且允许保留一些房屋不进行出售。\n\n示例 1:\n\n输入:n = 5, offers = [[0,0,1],[0,2,2],[1,3,2]]\n输出:3\n解释:\n有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。\n将位于 [0,0] 范围内的房屋以 1 金币的价格出售给第 1 位买家,并将位于 [1,3] 范围内的房屋以 2 金币的价格出售给第 3 位买家。\n可以证明我们最多只能获得 3 枚金币。\n\n示例 2:\n\n输入:n = 5, offers = [[0,0,1],[0,2,10],[1,3,2]]\n输出:10\n解释:有 5 所房屋,编号从 0 到 4 ,共有 3 个购买要约。\n将位于 [0,2] 范围内的房屋以 10 金币的价格出售给第 2 位买家。\n可以证明我们最多只能获得 10 枚金币。\n\n提示:\n\n * 1 <= n <= 105\n * 1 <= offers.length <= 105\n * offers[i].length == 3\n * 0 <= starti <= endi <= n - 1\n * 1 <= goldi <= 103\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximizeTheProfit(self, n: int, offers: List[List[int]]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 5, \"offers\": [[0,0,1],[0,2,2],[1,3,2]] }\nassert my_solution.maximizeTheProfit(**test_input) == 3\n\ntest_input = { \"n\": 5, \"offers\": [[0,0,1],[0,2,10],[1,3,2]] }\nassert my_solution.maximizeTheProfit(**test_input) == 10\n\ntest_input = { \"n\": 4, \"offers\": [[1,3,10],[1,3,3],[0,0,1],[0,0,7]] }\nassert my_solution.maximizeTheProfit(**test_input) == 17\n\ntest_input = { \"n\": 4, \"offers\": [[0,0,6],[1,2,8],[0,3,7],[2,2,5],[0,1,5],[2,3,2],[0,2,8],[2,3,10],[0,3,2]] }\nassert my_solution.maximizeTheProfit(**test_input) == 16\n\ntest_input = { \"n\": 15
|
|||
|
{"task_id": "weekly-contest-359-find-the-longest-equal-subarray", "url": "https://leetcode.com/problems/find-the-longest-equal-subarray", "title": "find-the-longest-equal-subarray", "meta": {"questionId": "2832", "questionFrontendId": "2831", "title": "Find the Longest Equal Subarray", "titleSlug": "find-the-longest-equal-subarray", "isPaidOnly": false, "difficulty": "Medium", "likes": 579, "dislikes": 14, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\n如果子数组中所有元素都相等,则认为子数组是一个 等值子数组 。注意,空数组是 等值子数组 。\n\n从 nums 中删除最多 k 个元素后,返回可能的最长等值子数组的长度。\n\n子数组 是数组中一个连续且可能为空的元素序列。\n\n示例 1:\n\n输入:nums = [1,3,2,3,1,3], k = 3\n输出:3\n解释:最优的方案是删除下标 2 和下标 4 的元素。\n删除后,nums 等于 [1, 3, 3, 3] 。\n最长等值子数组从 i = 1 开始到 j = 3 结束,长度等于 3 。\n可以证明无法创建更长的等值子数组。\n\n示例 2:\n\n输入:nums = [1,1,2,2,1,1], k = 2\n输出:4\n解释:最优的方案是删除下标 2 和下标 3 的元素。\n删除后,nums 等于 [1, 1, 1, 1] 。\n数组自身就是等值子数组,长度等于 4 。\n可以证明无法创建更长的等值子数组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= nums.length\n * 0 <= k <= nums.length\n\"\"\"\nclass Solution:\n def longestEqualSubarray(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。\n\n如果子数组中所有元素都相等,则认为子数组是一个 等值子数组 。注意,空数组是 等值子数组 。\n\n从 nums 中删除最多 k 个元素后,返回可能的最长等值子数组的长度。\n\n子数组 是数组中一个连续且可能为空的元素序列。\n\n示例 1:\n\n输入:nums = [1,3,2,3,1,3], k = 3\n输出:3\n解释:最优的方案是删除下标 2 和下标 4 的元素。\n删除后,nums 等于 [1, 3, 3, 3] 。\n最长等值子数组从 i = 1 开始到 j = 3 结束,长度等于 3 。\n可以证明无法创建更长的等值子数组。\n\n示例 2:\n\n输入:nums = [1,1,2,2,1,1], k = 2\n输出:4\n解释:最优的方案是删除下标 2 和下标 3 的元素。\n删除后,nums 等于 [1, 1, 1, 1] 。\n数组自身就是等值子数组,长度等于 4 。\n可以证明无法创建更长的等值子数组。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= nums.length\n * 0 <= k <= nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def longestEqualSubarray(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,2,3,1,3], \"k\": 3 }\nassert my_solution.longestEqualSubarray(**test_input) == 3\n\ntest_input = { \"nums\": [1,1,2,2,1,1], \"k\": 2 }\nassert my_solution.longestEqualSubarray(**test_input) == 4\n\ntest_input = { \"nums\": [1], \"k\": 0 }\nassert my_solution.longestEqualSubarray(**test_input) == 1\n\ntest_input = { \"nums\": [1], \"k\": 1 }\nassert my_solution.longestEqualSubarray(**test_input) == 1\n\ntest_input = { \"nums\": [2,1], \"k\": 1 }\nassert my_solution.longestEqualSubarray(**test_input) == 1\n\ntest_input = { \"nums\": [2,2], \"k\": 1 }\nassert my_solution.longestEqualSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [1,1], \"k\": 0 }\nassert my_solution.longestEqualSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [2,1], \"k\": 0 }\nassert my_solution.longestEqualSubarray(**test_input) == 1\n\ntest_input = { \"nums\": [1,2], \"k\": 1 }\nassert my_solution.longestEqualSubarray(**test_input) == 1\n\ntest_input = { \"nums\": [2,2], \"k\": 2 }\nassert my_solution.longestEqualSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [2,3,2], \"k\": 1 }\nassert my_solution.longestEqualSubarray(**test_input) ==
|
|||
|
{"task_id": "biweekly-contest-111-count-pairs-whose-sum-is-less-than-target", "url": "https://leetcode.com/problems/count-pairs-whose-sum-is-less-than-target", "title": "count-pairs-whose-sum-is-less-than-target", "meta": {"questionId": "2917", "questionFrontendId": "2824", "title": "Count Pairs Whose Sum is Less than Target", "titleSlug": "count-pairs-whose-sum-is-less-than-target", "isPaidOnly": false, "difficulty": "Easy", "likes": 358, "dislikes": 23, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target ,请你返回满足 0 <= i < j < n 且 nums[i] + nums[j] < target 的下标对 (i, j) 的数目。\n\n示例 1:\n\n输入:nums = [-1,1,2,3,1], target = 2\n输出:3\n解释:总共有 3 个下标对满足题目描述:\n- (0, 1) ,0 < 1 且 nums[0] + nums[1] = 0 < target\n- (0, 2) ,0 < 2 且 nums[0] + nums[2] = 1 < target\n- (0, 4) ,0 < 4 且 nums[0] + nums[4] = 0 < target\n注意 (0, 3) 不计入答案因为 nums[0] + nums[3] 不是严格小于 target 。\n\n示例 2:\n\n输入:nums = [-6,2,5,-2,-7,-1,3], target = -2\n输出:10\n解释:总共有 10 个下标对满足题目描述:\n- (0, 1) ,0 < 1 且 nums[0] + nums[1] = -4 < target\n- (0, 3) ,0 < 3 且 nums[0] + nums[3] = -8 < target\n- (0, 4) ,0 < 4 且 nums[0] + nums[4] = -13 < target\n- (0, 5) ,0 < 5 且 nums[0] + nums[5] = -7 < target\n- (0, 6) ,0 < 6 且 nums[0] + nums[6] = -3 < target\n- (1, 4) ,1 < 4 且 nums[1] + nums[4] = -5 < target\n- (3, 4) ,3 < 4 且 nums[3] + nums[4] = -9 < target\n- (3, 5) ,3 < 5 且 nums[3] + nums[5] = -3 < target\n- (4, 5) ,4 < 5 且 nums[4] + nums[5] = -8 < target\n- (4, 6) ,4 < 6 且 nums[4] + nums[6] = -4 < target\n\n\n提示:\n\n * 1 <= nums.length == n <= 50\n * -50 <= nums[i], target <= 50\n\"\"\"\nclass Solution:\n def countPairs(self, nums: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target ,请你返回满足 0 <= i < j < n 且 nums[i] + nums[j] < target 的下标对 (i, j) 的数目。\n\n示例 1:\n\n输入:nums = [-1,1,2,3,1], target = 2\n输出:3\n解释:总共有 3 个下标对满足题目描述:\n- (0, 1) ,0 < 1 且 nums[0] + nums[1] = 0 < target\n- (0, 2) ,0 < 2 且 nums[0] + nums[2] = 1 < target\n- (0, 4) ,0 < 4 且 nums[0] + nums[4] = 0 < target\n注意 (0, 3) 不计入答案因为 nums[0] + nums[3] 不是严格小于 target 。\n\n示例 2:\n\n输入:nums = [-6,2,5,-2,-7,-1,3], target = -2\n输出:10\n解释:总共有 10 个下标对满足题目描述:\n- (0, 1) ,0 < 1 且 nums[0] + nums[1] = -4 < target\n- (0, 3) ,0 < 3 且 nums[0] + nums[3] = -8 < target\n- (0, 4) ,0 < 4 且 nums[0] + nums[4] = -13 < target\n- (0, 5) ,0 < 5 且 nums[0] + nums[5] = -7 < target\n- (0, 6) ,0 < 6 且 nums[0] + nums[6] = -3 < target\n- (1, 4) ,1 < 4 且 nums[1] + nums[4] = -5 < target\n- (3, 4) ,3 < 4 且 nums[3] + nums[4] = -9 < target\n- (3, 5) ,3 < 5 且 nums[3] + nums[5] = -3 < target\n- (4, 5) ,4 < 5 且 nums[4] + nums[5] = -8 < target\n- (4, 6) ,4 < 6 且 nums[4] + nums[6] = -4 < target\n\n\n提示:\n\n * 1 <= nums.length == n <= 50\n * -50 <= nums[i], target <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countPairs(self, nums: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [-1,1,2,3,1], \"target\": 2 }\nassert my_solution.countPairs(**test_input) == 3\n\ntest_input = { \"nums\": [-6,2,5,-2,-7,-1,3], \"target\": -2 }\nassert my_solution.countPairs(**test_input) == 10\n\ntest_input = { \"nums\": [9,-5,-5,5,-5,-4,-6,6,-6], \"target\": 3 }\nassert my_solution.countPairs(**test_input) == 27\n\ntest_input = { \"nums\": [-8,-5,5,-4,10], \"target\": 2 }\nassert my_solution.countPairs(**test_input) == 6\n\ntest_input = { \"nums\": [-5,0,-7,-1,9,8,-9,9], \"target\": -14 }\nassert my_solution.countPairs(**test_input) == 1\n\ntest_inpu
|
|||
|
{"task_id": "biweekly-contest-111-make-string-a-subsequence-using-cyclic-increments", "url": "https://leetcode.com/problems/make-string-a-subsequence-using-cyclic-increments", "title": "make-string-a-subsequence-using-cyclic-increments", "meta": {"questionId": "3018", "questionFrontendId": "2825", "title": "Make String a Subsequence Using Cyclic Increments", "titleSlug": "make-string-a-subsequence-using-cyclic-increments", "isPaidOnly": false, "difficulty": "Medium", "likes": 273, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串 str1 和 str2 。\n\n一次操作中,你选择 str1 中的若干下标。对于选中的每一个下标 i ,你将 str1[i] 循环 递增,变成下一个字符。也就是说 'a' 变成 'b' ,'b' 变成 'c' ,以此类推,'z' 变成 'a' 。\n\n如果执行以上操作 至多一次 ,可以让 str2 成为 str1 的子序列,请你返回 true ,否则返回 false 。\n\n注意:一个字符串的子序列指的是从原字符串中删除一些(可以一个字符也不删)字符后,剩下字符按照原本先后顺序组成的新字符串。\n\n示例 1:\n\n输入:str1 = \"abc\", str2 = \"ad\"\n输出:true\n解释:选择 str1 中的下标 2 。\n将 str1[2] 循环递增,得到 'd' 。\n因此,str1 变成 \"abd\" 且 str2 现在是一个子序列。所以返回 true 。\n\n示例 2:\n\n输入:str1 = \"zc\", str2 = \"ad\"\n输出:true\n解释:选择 str1 中的下标 0 和 1 。\n将 str1[0] 循环递增得到 'a' 。\n将 str1[1] 循环递增得到 'd' 。\n因此,str1 变成 \"ad\" 且 str2 现在是一个子序列。所以返回 true 。\n\n示例 3:\n\n输入:str1 = \"ab\", str2 = \"d\"\n输出:false\n解释:这个例子中,没法在执行一次操作的前提下,将 str2 变为 str1 的子序列。\n所以返回 false 。\n\n提示:\n\n * 1 <= str1.length <= 105\n * 1 <= str2.length <= 105\n * str1 和 str2 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def canMakeSubsequence(self, str1: str, str2: str) -> bool:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串 str1 和 str2 。\n\n一次操作中,你选择 str1 中的若干下标。对于选中的每一个下标 i ,你将 str1[i] 循环 递增,变成下一个字符。也就是说 'a' 变成 'b' ,'b' 变成 'c' ,以此类推,'z' 变成 'a' 。\n\n如果执行以上操作 至多一次 ,可以让 str2 成为 str1 的子序列,请你返回 true ,否则返回 false 。\n\n注意:一个字符串的子序列指的是从原字符串中删除一些(可以一个字符也不删)字符后,剩下字符按照原本先后顺序组成的新字符串。\n\n示例 1:\n\n输入:str1 = \"abc\", str2 = \"ad\"\n输出:true\n解释:选择 str1 中的下标 2 。\n将 str1[2] 循环递增,得到 'd' 。\n因此,str1 变成 \"abd\" 且 str2 现在是一个子序列。所以返回 true 。\n\n示例 2:\n\n输入:str1 = \"zc\", str2 = \"ad\"\n输出:true\n解释:选择 str1 中的下标 0 和 1 。\n将 str1[0] 循环递增得到 'a' 。\n将 str1[1] 循环递增得到 'd' 。\n因此,str1 变成 \"ad\" 且 str2 现在是一个子序列。所以返回 true 。\n\n示例 3:\n\n输入:str1 = \"ab\", str2 = \"d\"\n输出:false\n解释:这个例子中,没法在执行一次操作的前提下,将 str2 变为 str1 的子序列。\n所以返回 false 。\n\n提示:\n\n * 1 <= str1.length <= 105\n * 1 <= str2.length <= 105\n * str1 和 str2 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def canMakeSubsequence(self, str1: str, str2: str) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"str1\": \"ab\", \"str2\": \"d\" }\nassert my_solution.canMakeSubsequence(**test_input) == False\n\ntest_input = { \"str1\": \"a\", \"str2\": \"d\" }\nassert my_solution.canMakeSubsequence(**test_input) == False\n\ntest_input = { \"str1\": \
|
|||
|
{"task_id": "biweekly-contest-111-sorting-three-groups", "url": "https://leetcode.com/problems/sorting-three-groups", "title": "sorting-three-groups", "meta": {"questionId": "2904", "questionFrontendId": "2826", "title": "Sorting Three Groups", "titleSlug": "sorting-three-groups", "isPaidOnly": false, "difficulty": "Medium", "likes": 347, "dislikes": 72, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始长度为 n 的整数数组 nums 。\n\n从 0 到 n - 1 的数字被分为编号从 1 到 3 的三个组,数字 i 属于组 nums[i] 。注意,有的组可能是 空的 。\n\n你可以执行以下操作任意次:\n\n * 选择数字 x 并改变它的组。更正式的,你可以将 nums[x] 改为数字 1 到 3 中的任意一个。\n\n你将按照以下过程构建一个新的数组 res :\n\n 1. 将每个组中的数字分别排序。\n 2. 将组 1 ,2 和 3 中的元素 依次 连接以得到 res 。\n\n如果得到的 res 是 非递减顺序的,那么我们称数组 nums 是 美丽数组 。\n\n请你返回将 nums 变为 美丽数组 需要的最少步数。\n\n示例 1:\n\n输入:nums = [2,1,3,2,1]\n输出:3\n解释:以下三步操作是最优方案:\n1. 将 nums[0] 变为 1 。\n2. 将 nums[2] 变为 1 。\n3. 将 nums[3] 变为 1 。\n执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3,4] ,组 2 和组 3 都为空。所以 res 等于 [0,1,2,3,4] ,它是非递减顺序的。\n三步操作是最少需要的步数。\n\n示例 2:\n\n输入:nums = [1,3,2,1,3,3]\n输出:2\n解释:以下两步操作是最优方案:\n1. 将 nums[1] 变为 1 。\n2. 将 nums[2] 变为 1 。\n执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3] ,组 2 为空,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减顺序的。\n两步操作是最少需要的步数。\n\n示例 3:\n\n输入:nums = [2,2,2,2,3,3]\n输出:0\n解释:不需要执行任何操作。\n组 1 为空,组 2 为 [0,1,2,3] ,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减顺序的。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 3\n\"\"\"\nclass Solution:\n def minimumOperations(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始长度为 n 的整数数组 nums 。\n\n从 0 到 n - 1 的数字被分为编号从 1 到 3 的三个组,数字 i 属于组 nums[i] 。注意,有的组可能是 空的 。\n\n你可以执行以下操作任意次:\n\n * 选择数字 x 并改变它的组。更正式的,你可以将 nums[x] 改为数字 1 到 3 中的任意一个。\n\n你将按照以下过程构建一个新的数组 res :\n\n 1. 将每个组中的数字分别排序。\n 2. 将组 1 ,2 和 3 中的元素 依次 连接以得到 res 。\n\n如果得到的 res 是 非递减顺序的,那么我们称数组 nums 是 美丽数组 。\n\n请你返回将 nums 变为 美丽数组 需要的最少步数。\n\n示例 1:\n\n输入:nums = [2,1,3,2,1]\n输出:3\n解释:以下三步操作是最优方案:\n1. 将 nums[0] 变为 1 。\n2. 将 nums[2] 变为 1 。\n3. 将 nums[3] 变为 1 。\n执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3,4] ,组 2 和组 3 都为空。所以 res 等于 [0,1,2,3,4] ,它是非递减顺序的。\n三步操作是最少需要的步数。\n\n示例 2:\n\n输入:nums = [1,3,2,1,3,3]\n输出:2\n解释:以下两步操作是最优方案:\n1. 将 nums[1] 变为 1 。\n2. 将 nums[2] 变为 1 。\n执行以上操作后,将每组中的数字排序,组 1 为 [0,1,2,3] ,组 2 为空,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减顺序的。\n两步操作是最少需要的步数。\n\n示例 3:\n\n输入:nums = [2,2,2,2,3,3]\n输出:0\n解释:不需要执行任何操作。\n组 1 为空,组 2 为 [0,1,2,3] ,组 3 为 [4,5] 。所以 res 等于 [0,1,2,3,4,5] ,它是非递减<E98092>
|
|||
|
{"task_id": "biweekly-contest-111-number-of-beautiful-integers-in-the-range", "url": "https://leetcode.com/problems/number-of-beautiful-integers-in-the-range", "title": "number-of-beautiful-integers-in-the-range", "meta": {"questionId": "3017", "questionFrontendId": "2827", "title": "Number of Beautiful Integers in the Range", "titleSlug": "number-of-beautiful-integers-in-the-range", "isPaidOnly": false, "difficulty": "Hard", "likes": 313, "dislikes": 24, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你正整数 low ,high 和 k 。\n\n如果一个数满足以下两个条件,那么它是 美丽的 :\n\n * 偶数数位的数目与奇数数位的数目相同。\n * 这个整数可以被 k 整除。\n\n请你返回范围 [low, high] 中美丽整数的数目。\n\n示例 1:\n\n输入:low = 10, high = 20, k = 3\n输出:2\n解释:给定范围中有 2 个美丽数字:[12,18]\n- 12 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。\n- 18 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。\n以下是一些不是美丽整数的例子:\n- 16 不是美丽整数,因为它不能被 k = 3 整除。\n- 15 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。\n给定范围内总共有 2 个美丽整数。\n\n示例 2:\n\n输入:low = 1, high = 10, k = 1\n输出:1\n解释:给定范围中有 1 个美丽数字:[10]\n- 10 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 1 整除。\n给定范围内总共有 1 个美丽整数。\n\n示例 3:\n\n输入:low = 5, high = 5, k = 2\n输出:0\n解释:给定范围中有 0 个美丽数字。\n- 5 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。\n\n\n提示:\n\n * 0 < low <= high <= 109\n * 0 < k <= 20\n\"\"\"\nclass Solution:\n def numberOfBeautifulIntegers(self, low: int, high: int, k: int) -> int:\n ", "prompt_sft": "给你正整数 low ,high 和 k 。\n\n如果一个数满足以下两个条件,那么它是 美丽的 :\n\n * 偶数数位的数目与奇数数位的数目相同。\n * 这个整数可以被 k 整除。\n\n请你返回范围 [low, high] 中美丽整数的数目。\n\n示例 1:\n\n输入:low = 10, high = 20, k = 3\n输出:2\n解释:给定范围中有 2 个美丽数字:[12,18]\n- 12 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。\n- 18 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 3 整除。\n以下是一些不是美丽整数的例子:\n- 16 不是美丽整数,因为它不能被 k = 3 整除。\n- 15 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。\n给定范围内总共有 2 个美丽整数。\n\n示例 2:\n\n输入:low = 1, high = 10, k = 1\n输出:1\n解释:给定范围中有 1 个美丽数字:[10]\n- 10 是美丽整数,因为它有 1 个奇数数位和 1 个偶数数位,而且可以被 k = 1 整除。\n给定范围内总共有 1 个美丽整数。\n\n示例 3:\n\n输入:low = 5, high = 5, k = 2\n输出:0\n解释:给定范围中有 0 个美丽数字。\n- 5 不是美丽整数,因为它的奇数数位和偶数数位的数目不相等。\n\n\n提示:\n\n * 0 < low <= high <= 109\n * 0 < k <= 20\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfBeautifulIntegers(self, low: int, high: int, k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"low\": 10, \"high\": 20, \"k\": 3 }\nassert my_solution.numberOfBeautifulIntegers(**test_input) == 2\n\ntest_input = { \"low\": 1, \"high\": 10, \"k\": 1 }\nassert my_solution.numberOfBeautifulIntegers(**test_input) == 1\n\ntest_input = { \"low\": 5, \"high\": 5, \"k\": 2 }\nassert my_solution.numberOfBeautifulIntegers(**test_input) == 0\n\ntest_input = { \"low\": 3, \"high\": 31, \"k\": 16 }\nassert my_soluti
|
|||
|
{"task_id": "weekly-contest-358-max-pair-sum-in-an-array", "url": "https://leetcode.com/problems/max-pair-sum-in-an-array", "title": "max-pair-sum-in-an-array", "meta": {"questionId": "2902", "questionFrontendId": "2815", "title": "Max Pair Sum in an Array", "titleSlug": "max-pair-sum-in-an-array", "isPaidOnly": false, "difficulty": "Easy", "likes": 274, "dislikes": 91, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。请你从 nums 中找出和 最大 的一对数,且这两个数数位上最大的数字相等。\n\n返回最大和,如果不存在满足题意的数字对,返回 -1 。\n\n示例 1:\n\n输入:nums = [51,71,17,24,42]\n输出:88\n解释:\ni = 1 和 j = 2 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 71 + 17 = 88 。\ni = 3 和 j = 4 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 24 + 42 = 66 。\n可以证明不存在其他数对满足数位上最大的数字相等,所以答案是 88 。\n\n示例 2:\n\n输入:nums = [1,2,3,4]\n输出:-1\n解释:不存在数对满足数位上最大的数字相等。\n\n\n提示:\n\n * 2 <= nums.length <= 100\n * 1 <= nums[i] <= 104\n\"\"\"\nclass Solution:\n def maxSum(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。请你从 nums 中找出和 最大 的一对数,且这两个数数位上最大的数字相等。\n\n返回最大和,如果不存在满足题意的数字对,返回 -1 。\n\n示例 1:\n\n输入:nums = [51,71,17,24,42]\n输出:88\n解释:\ni = 1 和 j = 2 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 71 + 17 = 88 。\ni = 3 和 j = 4 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 24 + 42 = 66 。\n可以证明不存在其他数对满足数位上最大的数字相等,所以答案是 88 。\n\n示例 2:\n\n输入:nums = [1,2,3,4]\n输出:-1\n解释:不存在数对满足数位上最大的数字相等。\n\n\n提示:\n\n * 2 <= nums.length <= 100\n * 1 <= nums[i] <= 104\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxSum(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [51,71,17,24,42] }\nassert my_solution.maxSum(**test_input) == 88\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.maxSum(**test_input) == -1\n\ntest_input = { \"nums\": [31,25,72,79,74] }\nassert my_solution.maxSum(**test_input) == 146\n\ntest_input = { \"nums\": [84,91,18,59,27,9,81,33,17,58] }\nassert my_solution.maxSum(**test_input) == 165\n\ntest_input = { \"nums\": [8,75,28,35,21,13,21] }\nassert my_solution.maxSum(**test_input) == 42\n\ntest_input = { \"nums\": [35,52,74,92,25,65,77,1,73,32] }\nassert my_solution.maxSum(**test_input) == 151\n\ntest_input = { \"nums\": [68,8,100,84,80,14,88] }\nassert my_solution.maxSum(**test_input) == 172\n\ntest_input = { \"nums\": [53,98,69,64,40,60,23] }\nassert my_solution.maxSum(**test_input) == 167\n\ntest_input = { \"nums\": [21,76] }\nassert my_solution.maxSum(**test_input) == -1\n\ntest_input = { \"nums\": [99,63,23,70,18,64] }\nassert my_solution.maxSum(**test_input) == 127\n\ntest_input = { \"nums\": [21,21,78] }\nassert my_solution.maxSum(**test_input) == 42\n\ntest_input = { \"nums\": [58,88,58,99,26,92] }\nassert my_solution.maxSum(**test_input) == 191\n\ntest_input = { \"nums\": [10,24,25,20,92,73,63,51] }\nassert my_solution.maxSum(**test_input) == 76\n\ntest_input = { \"nums\": [87,6,17,32,14,42,46,65,43,9] }\nassert my_solution.maxSum(**test_input) == 111\n\ntest_input = { \"nums\": [96,46,85,19,29] }\nassert my_solution.maxSum(**test_input) == 125\n\ntest_input = { \"nums\": [5,24] }\nassert my_solution.maxSum(**test_input) == -1\n\ntest_input = { \"nums\": [26,76,24,96,82,97,97,72,35] }\nassert my_solution.maxSum(**test_input) == 194\n\ntest_input = { \"nums\": [77,82,30,94] }\nassert my_solution.maxSum(**test_input) == -1\n\ntest_
|
|||
|
{"task_id": "weekly-contest-358-double-a-number-represented-as-a-linked-list", "url": "https://leetcode.com/problems/double-a-number-represented-as-a-linked-list", "title": "double-a-number-represented-as-a-linked-list", "meta": {"questionId": "2871", "questionFrontendId": "2816", "title": "Double a Number Represented as a Linked List", "titleSlug": "double-a-number-represented-as-a-linked-list", "isPaidOnly": false, "difficulty": "Medium", "likes": 397, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个 非空 链表的头节点 head ,表示一个不含前导零的非负数整数。\n\n将链表 翻倍 后,返回头节点 head 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/05/28/example.png]\n\n输入:head = [1,8,9]\n输出:[3,7,8]\n解释:上图中给出的链表,表示数字 189 。返回的链表表示数字 189 * 2 = 378 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/05/28/example2.png]\n\n输入:head = [9,9,9]\n输出:[1,9,9,8]\n解释:上图中给出的链表,表示数字 999 。返回的链表表示数字 999 * 2 = 1998 。\n\n\n提示:\n\n * 链表中节点的数目在范围 [1, 104] 内\n * 0 <= Node.val <= 9\n * 生成的输入满足:链表表示一个不含前导零的数字,除了数字 0 本身。\n\"\"\"\n# Definition for singly-linked list.\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.next = next\nclass Solution:\n def doubleIt(self, head: Optional[ListNode]) -> Optional[ListNode]:\n ", "prompt_sft": "给你一个 非空 链表的头节点 head ,表示一个不含前导零的非负数整数。\n\n将链表 翻倍 后,返回头节点 head 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/05/28/example.png]\n\n输入:head = [1,8,9]\n输出:[3,7,8]\n解释:上图中给出的链表,表示数字 189 。返回的链表表示数字 189 * 2 = 378 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/05/28/example2.png]\n\n输入:head = [9,9,9]\n输出:[1,9,9,8]\n解释:上图中给出的链表,表示数字 999 。返回的链表表示数字 999 * 2 = 1998 。\n\n\n提示:\n\n * 链表中节点的数目在范围 [1, 104] 内\n * 0 <= Node.val <= 9\n * 生成的输入满足:链表表示一个不含前导零的数字,除了数字 0 本身。\n\n\n请完成下面的代码来解决上述问题:\n```python\n# Definition for singly-linked list.\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.next = next\nclass Solution:\n def doubleIt(self, head: Optional[ListNode]) -> Optional[ListNode]:\n \n```", "test": "\nmy_solution = Solution()\n\n_f1 = lambda lst: ListNode(lst[0], _f1(lst[1:])) if lst else None\n_f2 = lambda node: [node.val] + _f2(node.next) if node else []\n\n\ntest_input = { \"head\": _f1([1,8,9]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [3,7,8]\n\ntest_input = { \"head\": _f1([9,9,9]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,9,9,8]\n\ntest_input = { \"head\": _f1([0]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [0]\n\ntest_input = { \"head\": _f1([1]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [2]\n\ntest_input = { \"head\": _f1([2]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [4]\n\ntest_input = { \"head\": _f1([3]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [6]\n\ntest_input = { \"head\": _f1([4]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [8]\n\ntest_input = { \"head\": _f1([5]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,0]\n\ntest_input = { \"head\": _f1([6]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,2]\n\ntest_input = { \"head\": _f1([7]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,4]\n\ntest_input = { \"head\": _f1([8]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,6]\n\ntest_input = { \"head\": _f1([9]) }\nassert _f2(my_solution.doubleIt(**test_input)) == [1,8]\n\ntest_input = { \"head\": _f1([1,0]) }\nassert _f2(my_solution
|
|||
|
{"task_id": "weekly-contest-358-minimum-absolute-difference-between-elements-with-constraint", "url": "https://leetcode.com/problems/minimum-absolute-difference-between-elements-with-constraint", "title": "minimum-absolute-difference-between-elements-with-constraint", "meta": {"questionId": "3000", "questionFrontendId": "2817", "title": "Minimum Absolute Difference Between Elements With Constraint", "titleSlug": "minimum-absolute-difference-between-elements-with-constraint", "isPaidOnly": false, "difficulty": "Medium", "likes": 618, "dislikes": 64, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 x 。\n\n请你找到数组中下标距离至少为 x 的两个元素的 差值绝对值 的 最小值 。\n\n换言之,请你找到两个下标 i 和 j ,满足 abs(i - j) >= x 且 abs(nums[i] - nums[j]) 的值最小。\n\n请你返回一个整数,表示下标距离至少为 x 的两个元素之间的差值绝对值的 最小值 。\n\n示例 1:\n\n输入:nums = [4,3,2,4], x = 2\n输出:0\n解释:我们选择 nums[0] = 4 和 nums[3] = 4 。\n它们下标距离满足至少为 2 ,差值绝对值为最小值 0 。\n0 是最优解。\n\n示例 2:\n\n输入:nums = [5,3,2,10,15], x = 1\n输出:1\n解释:我们选择 nums[1] = 3 和 nums[2] = 2 。\n它们下标距离满足至少为 1 ,差值绝对值为最小值 1 。\n1 是最优解。\n\n示例 3:\n\n输入:nums = [1,2,3,4], x = 3\n输出:3\n解释:我们选择 nums[0] = 1 和 nums[3] = 4 。\n它们下标距离满足至少为 3 ,差值绝对值为最小值 3 。\n3 是最优解。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n * 0 <= x < nums.length\n\"\"\"\nclass Solution:\n def minAbsoluteDifference(self, nums: List[int], x: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 x 。\n\n请你找到数组中下标距离至少为 x 的两个元素的 差值绝对值 的 最小值 。\n\n换言之,请你找到两个下标 i 和 j ,满足 abs(i - j) >= x 且 abs(nums[i] - nums[j]) 的值最小。\n\n请你返回一个整数,表示下标距离至少为 x 的两个元素之间的差值绝对值的 最小值 。\n\n示例 1:\n\n输入:nums = [4,3,2,4], x = 2\n输出:0\n解释:我们选择 nums[0] = 4 和 nums[3] = 4 。\n它们下标距离满足至少为 2 ,差值绝对值为最小值 0 。\n0 是最优解。\n\n示例 2:\n\n输入:nums = [5,3,2,10,15], x = 1\n输出:1\n解释:我们选择 nums[1] = 3 和 nums[2] = 2 。\n它们下标距离满足至少为 1 ,差值绝对值为最小值 1 。\n1 是最优解。\n\n示例 3:\n\n输入:nums = [1,2,3,4], x = 3\n输出:3\n解释:我们选择 nums[0] = 1 和 nums[3] = 4 。\n它们下标距离满足至少为 3 ,差值绝对值为最小值 3 。\n3 是最优解。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n * 0 <= x < nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minAbsoluteDifference(self, nums: List[int], x: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [4,3,2,4], \"x\": 2 }\nassert my_solution.minAbsoluteDifference(**test_input) == 0\n\ntest_input = { \"nums\": [5,3,2,10,15], \"x\": 1 }\nassert my_solution.minAbsoluteDifference(**test_input) == 1\n\ntest_input = { \"nums\": [1,2,3,4], \"x\": 3 }\nassert my_solution.minAbsoluteDifference(**test_input) == 3\n\ntest_input = { \"nums\": [1,67], \"x\": 1 }\nassert my_solution.minAbsoluteDifference(**test_input) == 66\n\ntest_input = { \"nums\": [7,398], \"x\": 1 }\nassert my_solution.minAbsoluteDifference(**test_input) == 391\n\ntest_input = { \"nums\": [12,141], \"x\": 1 }\nassert my_solution.minAbsoluteDifference(**test_input) == 129\n\ntest_input = { \"nums\": [21,75], \"x\": 1 }\nassert my_solution.minAbsoluteDifference(**test_input) == 54\n\ntest_input = { \"nums\": [22,147], \"x\": 1 }\nassert my_solution.minAbs
|
|||
|
{"task_id": "weekly-contest-358-apply-operations-to-maximize-score", "url": "https://leetcode.com/problems/apply-operations-to-maximize-score", "title": "apply-operations-to-maximize-score", "meta": {"questionId": "3001", "questionFrontendId": "2818", "title": "Apply Operations to Maximize Score", "titleSlug": "apply-operations-to-maximize-score", "isPaidOnly": false, "difficulty": "Hard", "likes": 301, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 的正整数数组 nums 和一个整数 k 。\n\n一开始,你的分数为 1 。你可以进行以下操作至多 k 次,目标是使你的分数最大:\n\n * 选择一个之前没有选过的 非空 子数组 nums[l, ..., r] 。\n * 从 nums[l, ..., r] 里面选择一个 质数分数 最高的元素 x 。如果多个元素质数分数相同且最高,选择下标最小的一个。\n * 将你的分数乘以 x 。\n\nnums[l, ..., r] 表示 nums 中起始下标为 l ,结束下标为 r 的子数组,两个端点都包含。\n\n一个整数的 质数分数 等于 x 不同质因子的数目。比方说, 300 的质数分数为 3 ,因为 300 = 2 * 2 * 3 * 5 * 5 。\n\n请你返回进行至多 k 次操作后,可以得到的 最大分数 。\n\n由于答案可能很大,请你将结果对 109 + 7 取余后返回。\n\n示例 1:\n\n输入:nums = [8,3,9,3,8], k = 2\n输出:81\n解释:进行以下操作可以得到分数 81 :\n- 选择子数组 nums[2, ..., 2] 。nums[2] 是子数组中唯一的元素。所以我们将分数乘以 nums[2] ,分数变为 1 * 9 = 9 。\n- 选择子数组 nums[2, ..., 3] 。nums[2] 和 nums[3] 质数分数都为 1 ,但是 nums[2] 下标更小。所以我们将分数乘以 nums[2] ,分数变为 9 * 9 = 81 。\n81 是可以得到的最高得分。\n\n示例 2:\n\n输入:nums = [19,12,14,6,10,18], k = 3\n输出:4788\n解释:进行以下操作可以得到分数 4788 :\n- 选择子数组 nums[0, ..., 0] 。nums[0] 是子数组中唯一的元素。所以我们将分数乘以 nums[0] ,分数变为 1 * 19 = 19 。\n- 选择子数组 nums[5, ..., 5] 。nums[5] 是子数组中唯一的元素。所以我们将分数乘以 nums[5] ,分数变为 19 * 18 = 342 。\n- 选择子数组 nums[2, ..., 3] 。nums[2] 和 nums[3] 质数分数都为 2,但是 nums[2] 下标更小。所以我们将分数乘以 nums[2] ,分数变为 342 * 14 = 4788 。\n4788 是可以得到的最高的分。\n\n\n提示:\n\n * 1 <= nums.length == n <= 105\n * 1 <= nums[i] <= 105\n * 1 <= k <= min(n * (n + 1) / 2, 109)\n\"\"\"\nclass Solution:\n def maximumScore(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个长度为 n 的正整数数组 nums 和一个整数 k 。\n\n一开始,你的分数为 1 。你可以进行以下操作至多 k 次,目标是使你的分数最大:\n\n * 选择一个之前没有选过的 非空 子数组 nums[l, ..., r] 。\n * 从 nums[l, ..., r] 里面选择一个 质数分数 最高的元素 x 。如果多个元素质数分数相同且最高,选择下标最小的一个。\n * 将你的分数乘以 x 。\n\nnums[l, ..., r] 表示 nums 中起始下标为 l ,结束下标为 r 的子数组,两个端点都包含。\n\n一个整数的 质数分数 等于 x 不同质因子的数目。比方说, 300 的质数分数为 3 ,因为 300 = 2 * 2 * 3 * 5 * 5 。\n\n请你返回进行至多 k 次操作后,可以得到的 最大分数 。\n\n由于答案可能很大,请你将结果对 109 + 7 取余后返回。\n\n示例 1:\n\n输入:nums = [8,3,9,3,8], k = 2\n输出:81\n解释:进行以下操作可以得到分数 81 :\n- 选择子数组 nums[2, ..., 2] 。nums[2] 是子数组中唯一的元素。所以我们将分数乘以 nums[2] ,分数变为 1 * 9 = 9 。\n- 选择子数组 nums[2, ..., 3] 。nums[2] 和 nums[3] 质数分数都为 1 ,但是 nums[2] 下标更小。所以我们将分数乘以 nums[2] ,分数变为 9 * 9 = 81 。\n81 是可以得到的最高得分
|
|||
|
{"task_id": "weekly-contest-357-faulty-keyboard", "url": "https://leetcode.com/problems/faulty-keyboard", "title": "faulty-keyboard", "meta": {"questionId": "2886", "questionFrontendId": "2810", "title": "Faulty Keyboard", "titleSlug": "faulty-keyboard", "isPaidOnly": false, "difficulty": "Easy", "likes": 343, "dislikes": 5, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n你的笔记本键盘存在故障,每当你在上面输入字符 'i' 时,它会反转你所写的字符串。而输入其他字符则可以正常工作。\n\n给你一个下标从 0 开始的字符串 s ,请你用故障键盘依次输入每个字符。\n\n返回最终笔记本屏幕上输出的字符串。\n\n示例 1:\n\n输入:s = \"string\"\n输出:\"rtsng\"\n解释:\n输入第 1 个字符后,屏幕上的文本是:\"s\" 。\n输入第 2 个字符后,屏幕上的文本是:\"st\" 。\n输入第 3 个字符后,屏幕上的文本是:\"str\" 。\n因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 \"rts\" 。\n输入第 5 个字符后,屏幕上的文本是:\"rtsn\" 。\n输入第 6 个字符后,屏幕上的文本是: \"rtsng\" 。\n因此,返回 \"rtsng\" 。\n\n示例 2:\n\n输入:s = \"poiinter\"\n输出:\"ponter\"\n解释:\n输入第 1 个字符后,屏幕上的文本是:\"p\" 。\n输入第 2 个字符后,屏幕上的文本是:\"po\" 。\n因为第 3 个字符是 'i' ,屏幕上的文本被反转,变成 \"op\" 。\n因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 \"po\" 。\n输入第 5 个字符后,屏幕上的文本是:\"pon\" 。\n输入第 6 个字符后,屏幕上的文本是:\"pont\" 。\n输入第 7 个字符后,屏幕上的文本是:\"ponte\" 。\n输入第 8 个字符后,屏幕上的文本是:\"ponter\" 。\n因此,返回 \"ponter\" 。\n\n提示:\n\n * 1 <= s.length <= 100\n * s 由小写英文字母组成\n * s[0] != 'i'\n\"\"\"\nclass Solution:\n def finalString(self, s: str) -> str:\n ", "prompt_sft": "你的笔记本键盘存在故障,每当你在上面输入字符 'i' 时,它会反转你所写的字符串。而输入其他字符则可以正常工作。\n\n给你一个下标从 0 开始的字符串 s ,请你用故障键盘依次输入每个字符。\n\n返回最终笔记本屏幕上输出的字符串。\n\n示例 1:\n\n输入:s = \"string\"\n输出:\"rtsng\"\n解释:\n输入第 1 个字符后,屏幕上的文本是:\"s\" 。\n输入第 2 个字符后,屏幕上的文本是:\"st\" 。\n输入第 3 个字符后,屏幕上的文本是:\"str\" 。\n因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 \"rts\" 。\n输入第 5 个字符后,屏幕上的文本是:\"rtsn\" 。\n输入第 6 个字符后,屏幕上的文本是: \"rtsng\" 。\n因此,返回 \"rtsng\" 。\n\n示例 2:\n\n输入:s = \"poiinter\"\n输出:\"ponter\"\n解释:\n输入第 1 个字符后,屏幕上的文本是:\"p\" 。\n输入第 2 个字符后,屏幕上的文本是:\"po\" 。\n因为第 3 个字符是 'i' ,屏幕上的文本被反转,变成 \"op\" 。\n因为第 4 个字符是 'i' ,屏幕上的文本被反转,变成 \"po\" 。\n输入第 5 个字符后,屏幕上的文本是:\"pon\" 。\n输入第 6 个字符后,屏幕上的文本是:\"pont\" 。\n输入第 7 个字符后,屏幕上的文本是:\"ponte\" 。\n输入第 8 个字符后,屏幕上的文本是:\"ponter\" 。\n因此,返回 \"ponter\" 。\n\n提示:\n\n * 1 <= s.length <= 100\n * s 由小写英文字母组成\n * s[0] != 'i'\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def finalString(self, s: str) -> str:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"string\" }\nassert my_solution.finalString(**test_input) == \"rtsng\"\n\ntest_input = { \"s\": \"poiinter\" }\nassert my_solution.finalString(**test_input) == \"ponter\"\n\ntest_input = { \"s\": \"goci\" }\nassert my_solution.finalString(**test_input) == \"cog\"\n\ntest_input = { \"
|
|||
|
{"task_id": "weekly-contest-357-check-if-it-is-possible-to-split-array", "url": "https://leetcode.com/problems/check-if-it-is-possible-to-split-array", "title": "check-if-it-is-possible-to-split-array", "meta": {"questionId": "2916", "questionFrontendId": "2811", "title": "Check if it is Possible to Split Array", "titleSlug": "check-if-it-is-possible-to-split-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 425, "dislikes": 84, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 的数组 nums 和一个整数 m 。请你判断能否执行一系列操作,将数组拆分成 n 个 非空 数组。\n\n在每一步操作中,你可以选择一个 长度至少为 2 的现有数组(之前步骤的结果) 并将其拆分成 2 个子数组,而得到的 每个 子数组,至少 需要满足以下条件之一:\n\n * 子数组的长度为 1 ,或者\n * 子数组元素之和 大于或等于 m 。\n\n如果你可以将给定数组拆分成 n 个满足要求的数组,返回 true ;否则,返回 false 。\n\n注意:子数组是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums = [2, 2, 1], m = 4\n输出:true\n解释:\n第 1 步,将数组 nums 拆分成 [2, 2] 和 [1] 。\n第 2 步,将数组 [2, 2] 拆分成 [2] 和 [2] 。\n因此,答案为 true 。\n\n示例 2:\n\n输入:nums = [2, 1, 3], m = 5\n输出:false\n解释:\n存在两种不同的拆分方法:\n第 1 种,将数组 nums 拆分成 [2, 1] 和 [3] 。\n第 2 种,将数组 nums 拆分成 [2] 和 [1, 3] 。\n然而,这两种方法都不满足题意。因此,答案为 false 。\n\n示例 3:\n\n输入:nums = [2, 3, 3, 2, 3], m = 6\n输出:true\n解释:\n第 1 步,将数组 nums 拆分成 [2, 3, 3, 2] 和 [3] 。\n第 2 步,将数组 [2, 3, 3, 2] 拆分成 [2, 3, 3] 和 [2] 。\n第 3 步,将数组 [2, 3, 3] 拆分成 [2] 和 [3, 3] 。\n第 4 步,将数组 [3, 3] 拆分成 [3] 和 [3] 。\n因此,答案为 true 。\n\n提示:\n\n * 1 <= n == nums.length <= 100\n * 1 <= nums[i] <= 100\n * 1 <= m <= 200\n\"\"\"\nclass Solution:\n def canSplitArray(self, nums: List[int], m: int) -> bool:\n ", "prompt_sft": "给你一个长度为 n 的数组 nums 和一个整数 m 。请你判断能否执行一系列操作,将数组拆分成 n 个 非空 数组。\n\n在每一步操作中,你可以选择一个 长度至少为 2 的现有数组(之前步骤的结果) 并将其拆分成 2 个子数组,而得到的 每个 子数组,至少 需要满足以下条件之一:\n\n * 子数组的长度为 1 ,或者\n * 子数组元素之和 大于或等于 m 。\n\n如果你可以将给定数组拆分成 n 个满足要求的数组,返回 true ;否则,返回 false 。\n\n注意:子数组是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums = [2, 2, 1], m = 4\n输出:true\n解释:\n第 1 步,将数组 nums 拆分成 [2, 2] 和 [1] 。\n第 2 步,将数组 [2, 2] 拆分成 [2] 和 [2] 。\n因此,答案为 true 。\n\n示例 2:\n\n输入:nums = [2, 1, 3], m = 5\n输出:false\n解释:\n存在两种不同的拆分方法:\n第 1 种,将数组 nums 拆分成 [2, 1] 和 [3] 。\n第 2 种,将数组 nums 拆分成 [2] 和 [1, 3] 。\n然而,这两种方法都不满足题意。因此,答案为 false 。\n\n示例 3:\n\n输入:nums = [2, 3, 3, 2, 3], m = 6\n输出:true\n解释:\n第 1 步,将数组 nums 拆分成 [2, 3, 3, 2] 和 [3] 。\n第 2 步,将数组 [2, 3, 3, 2] 拆分成 [2, 3, 3] 和 [2] 。\n第 3 步,将数组 [2, 3, 3] 拆分成 [2] 和 [3, 3] 。\n第 4 步,将数组 [3, 3] 拆分成 [3] 和 [3] 。\n因此,答案为 true 。\n\n提示:\n\n * 1 <= n == nums.length <= 100\n * 1 <= nums[i] <= 100\n * 1 <= m <= 200\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def canSplitArray(self, nums: List[int], m: int) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2, 2, 1], \"m\": 4 }\nassert my_solut
|
|||
|
{"task_id": "weekly-contest-357-find-the-safest-path-in-a-grid", "url": "https://leetcode.com/problems/find-the-safest-path-in-a-grid", "title": "find-the-safest-path-in-a-grid", "meta": {"questionId": "2914", "questionFrontendId": "2812", "title": "Find the Safest Path in a Grid", "titleSlug": "find-the-safest-path-in-a-grid", "isPaidOnly": false, "difficulty": "Medium", "likes": 706, "dislikes": 68, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid ,其中 (r, c) 表示:\n\n * 如果 grid[r][c] = 1 ,则表示一个存在小偷的单元格\n * 如果 grid[r][c] = 0 ,则表示一个空单元格\n\n你最开始位于单元格 (0, 0) 。在一步移动中,你可以移动到矩阵中的任一相邻单元格,包括存在小偷的单元格。\n\n矩阵中路径的 安全系数 定义为:从路径中任一单元格到矩阵中任一小偷所在单元格的 最小 曼哈顿距离。\n\n返回所有通向单元格 (n - 1, n - 1) 的路径中的 最大安全系数 。\n\n单元格 (r, c) 的某个 相邻 单元格,是指在矩阵中存在的 (r, c + 1)、(r, c - 1)、(r + 1, c) 和 (r - 1, c) 之一。\n\n两个单元格 (a, b) 和 (x, y) 之间的 曼哈顿距离 等于 | a - x | + | b - y | ,其中 |val| 表示 val 的绝对值。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/02/example1.png]\n\n输入:grid = [[1,0,0],[0,0,0],[0,0,1]]\n输出:0\n解释:从 (0, 0) 到 (n - 1, n - 1) 的每条路径都经过存在小偷的单元格 (0, 0) 和 (n - 1, n - 1) 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/07/02/example2.png]\n\n输入:grid = [[0,0,1],[0,0,0],[0,0,0]]\n输出:2\n解释:\n上图所示路径的安全系数为 2:\n- 该路径上距离小偷所在单元格(0,2)最近的单元格是(0,0)。它们之间的曼哈顿距离为 | 0 - 0 | + | 0 - 2 | = 2 。\n可以证明,不存在安全系数更高的其他路径。\n\n示例 3:\n\n[https://assets.leetcode.com/uploads/2023/07/02/example3.png]\n\n输入:grid = [[0,0,0,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]]\n输出:2\n解释:\n上图所示路径的安全系数为 2:\n- 该路径上距离小偷所在单元格(0,3)最近的单元格是(1,2)。它们之间的曼哈顿距离为 | 0 - 1 | + | 3 - 2 | = 2 。\n- 该路径上距离小偷所在单元格(3,0)最近的单元格是(3,2)。它们之间的曼哈顿距离为 | 3 - 3 | + | 0 - 2 | = 2 。\n可以证明,不存在安全系数更高的其他路径。\n\n提示:\n\n * 1 <= grid.length == n <= 400\n * grid[i].length == n\n * grid[i][j] 为 0 或 1\n * grid 至少存在一个小偷\n\"\"\"\nclass Solution:\n def maximumSafenessFactor(self, grid: List[List[int]]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid ,其中 (r, c) 表示:\n\n * 如果 grid[r][c] = 1 ,则表示一个存在小偷的单元格\n * 如果 grid[r][c] = 0 ,则表示一个空单元格\n\n你最开始位于单元格 (0, 0) 。在一步移动中,你可以移动到矩阵中的任一相邻单元格,包括存在小偷的单元格。\n\n矩阵中路径的 安全系数 定义为:从路径中任一单元格到矩阵中任一小偷所在单元格的 最小 曼哈顿距离。\n\n返回所有通向单元格 (n - 1, n - 1) 的路径中的 最大安全系数 。\n\n单元格 (r, c) 的某个 相邻 单元格,是指在矩阵中存在的 (r, c + 1)、(r, c - 1)、(r + 1, c) 和 (r - 1, c) 之一。\n\n两个单元格 (a, b) 和 (x, y) 之间的 曼哈顿距离 等于 | a - x | + | b - y | ,其中 |val| 表示 val 的绝对值。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/02/example1.png]\n\n输入:grid = [[1,0,0],[0,0,0],[0,0,1]]\n输出:0\n解释:从 (0, 0) 到 (n - 1, n - 1) 的每条路径都经过存在小偷的单元格 (0, 0) 和 (n - 1, n - 1) 。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/07/02/example2.png]\n\n输入:grid = [[0,0,1],[0,0,0],[0,0,0]]\n输出:2\n解<6E>
|
|||
|
{"task_id": "weekly-contest-357-maximum-elegance-of-a-k-length-subsequence", "url": "https://leetcode.com/problems/maximum-elegance-of-a-k-length-subsequence", "title": "maximum-elegance-of-a-k-length-subsequence", "meta": {"questionId": "2894", "questionFrontendId": "2813", "title": "Maximum Elegance of a K-Length Subsequence", "titleSlug": "maximum-elegance-of-a-k-length-subsequence", "isPaidOnly": false, "difficulty": "Hard", "likes": 270, "dislikes": 3, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个长度为 n 的二维整数数组 items 和一个整数 k 。\n\nitems[i] = [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。\n\n现定义 items 的 子序列 的 优雅度 可以用 total_profit + distinct_categories2 计算,其中 total_profit 是子序列中所有项目的利润总和,distinct_categories 是所选子序列所含的所有类别中不同类别的数量。\n\n你的任务是从 items 所有长度为 k 的子序列中,找出 最大优雅度 。\n\n用整数形式表示并返回 items 中所有长度恰好为 k 的子序列的最大优雅度。\n\n注意:数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。\n\n示例 1:\n\n输入:items = [[3,2],[5,1],[10,1]], k = 2\n输出:17\n解释:\n在这个例子中,我们需要选出长度为 2 的子序列。\n其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。\n子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。\n因此,优雅度为 13 + 22 = 17 ,可以证明 17 是可以获得的最大优雅度。\n\n示例 2:\n\n输入:items = [[3,1],[3,1],[2,2],[5,3]], k = 3\n输出:19\n解释:\n在这个例子中,我们需要选出长度为 3 的子序列。\n其中一种方案是 items[0] = [3,1] ,items[2] = [2,2] 和 items[3] = [5,3] 。\n子序列的总利润为 3 + 2 + 5 = 10 ,子序列包含 3 种不同类别 [1, 2, 3] 。\n因此,优雅度为 10 + 32 = 19 ,可以证明 19 是可以获得的最大优雅度。\n\n示例 3:\n\n输入:items = [[1,1],[2,1],[3,1]], k = 3\n输出:7\n解释:\n在这个例子中,我们需要选出长度为 3 的子序列。\n我们需要选中所有项目。\n子序列的总利润为 1 + 2 + 3 = 6,子序列包含 1 种不同类别 [1] 。\n因此,最大优雅度为 6 + 12 = 7 。\n\n提示:\n\n * 1 <= items.length == n <= 105\n * items[i].length == 2\n * items[i][0] == profiti\n * items[i][1] == categoryi\n * 1 <= profiti <= 109\n * 1 <= categoryi <= n\n * 1 <= k <= n\n\"\"\"\nclass Solution:\n def findMaximumElegance(self, items: List[List[int]], k: int) -> int:\n ", "prompt_sft": "给你一个长度为 n 的二维整数数组 items 和一个整数 k 。\n\nitems[i] = [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。\n\n现定义 items 的 子序列 的 优雅度 可以用 total_profit + distinct_categories2 计算,其中 total_profit 是子序列中所有项目的利润总和,distinct_categories 是所选子序列所含的所有类别中不同类别的数量。\n\n你的任务是从 items 所有长度为 k 的子序列中,找出 最大优雅度 。\n\n用整数形式表示并返回 items 中所有长度恰好为 k 的子序列的最大优雅度。\n\n注意:数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。\n\n示例 1:\n\n输入:items = [[3,2],[5,1],[10,1]], k = 2\n输出:17\n解释:\n在这个例子中,我们需要选出长度为 2 的子序列。\n其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。\n子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。\n因此,优雅度为 13 + 22 = 17 ,可以证明 17 是可以获得的最大优雅度。\n\n示例 2:\n\n输入:items = [[3,1],[3,1],[2,2],[5,3]], k = 3\n输出:19\n解释:\n在这个例子中,我们需要选出<E98089><E587BA>
|
|||
|
{"task_id": "biweekly-contest-110-account-balance-after-rounded-purchase", "url": "https://leetcode.com/problems/account-balance-after-rounded-purchase", "title": "account-balance-after-rounded-purchase", "meta": {"questionId": "2955", "questionFrontendId": "2806", "title": "Account Balance After Rounded Purchase", "titleSlug": "account-balance-after-rounded-purchase", "isPaidOnly": false, "difficulty": "Easy", "likes": 178, "dislikes": 37, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n一开始,你的银行账户里有 100 块钱。\n\n给你一个整数purchaseAmount ,它表示你在一次购买中愿意支出的金额。\n\n在一个商店里,你进行一次购买,实际支出的金额会向 最近 的 10 的 倍数 取整。换句话说,你实际会支付一个 非负 金额 roundedAmount ,满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值 最小 。\n\n如果存在多于一个最接近的 10 的倍数,较大的倍数 是你的实际支出金额。\n\n请你返回一个整数,表示你在愿意支出金额为 purchaseAmount 块钱的前提下,购买之后剩下的余额。\n\n注意: 0 也是 10 的倍数。\n\n示例 1:\n\n输入:purchaseAmount = 9\n输出:90\n解释:这个例子中,最接近 9 的 10 的倍数是 10 。所以你的账户余额为 100 - 10 = 90 。\n\n示例 2:\n\n输入:purchaseAmount = 15\n输出:80\n解释:这个例子中,有 2 个最接近 15 的 10 的倍数:10 和 20,较大的数 20 是你的实际开销。\n所以你的账户余额为 100 - 20 = 80 。\n\n\n提示:\n\n * 0 <= purchaseAmount <= 100\n\"\"\"\nclass Solution:\n def accountBalanceAfterPurchase(self, purchaseAmount: int) -> int:\n ", "prompt_sft": "一开始,你的银行账户里有 100 块钱。\n\n给你一个整数purchaseAmount ,它表示你在一次购买中愿意支出的金额。\n\n在一个商店里,你进行一次购买,实际支出的金额会向 最近 的 10 的 倍数 取整。换句话说,你实际会支付一个 非负 金额 roundedAmount ,满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值 最小 。\n\n如果存在多于一个最接近的 10 的倍数,较大的倍数 是你的实际支出金额。\n\n请你返回一个整数,表示你在愿意支出金额为 purchaseAmount 块钱的前提下,购买之后剩下的余额。\n\n注意: 0 也是 10 的倍数。\n\n示例 1:\n\n输入:purchaseAmount = 9\n输出:90\n解释:这个例子中,最接近 9 的 10 的倍数是 10 。所以你的账户余额为 100 - 10 = 90 。\n\n示例 2:\n\n输入:purchaseAmount = 15\n输出:80\n解释:这个例子中,有 2 个最接近 15 的 10 的倍数:10 和 20,较大的数 20 是你的实际开销。\n所以你的账户余额为 100 - 20 = 80 。\n\n\n提示:\n\n * 0 <= purchaseAmount <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def accountBalanceAfterPurchase(self, purchaseAmount: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"purchaseAmount\": 9 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 15 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 80\n\ntest_input = { \"purchaseAmount\": 10 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 11 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 12 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 13 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 14 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 90\n\ntest_input = { \"purchaseAmount\": 16 }\nassert my_solution.accountBalanceAfterPurchase(**test_input) == 80\n\ntest_input = { \"purchaseAmount\": 17 }\nassert my
|
|||
|
{"task_id": "biweekly-contest-110-insert-greatest-common-divisors-in-linked-list", "url": "https://leetcode.com/problems/insert-greatest-common-divisors-in-linked-list", "title": "insert-greatest-common-divisors-in-linked-list", "meta": {"questionId": "2903", "questionFrontendId": "2807", "title": "Insert Greatest Common Divisors in Linked List", "titleSlug": "insert-greatest-common-divisors-in-linked-list", "isPaidOnly": false, "difficulty": "Medium", "likes": 390, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个链表的头 head ,每个结点包含一个整数值。\n\n在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。\n\n请你返回插入之后的链表。\n\n两个数的 最大公约数 是可以被两个数字整除的最大正整数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/18/ex1_copy.png]\n\n输入:head = [18,6,10,3]\n输出:[18,6,6,2,10,1,3]\n解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。\n- 18 和 6 的最大公约数为 6 ,插入第一和第二个结点之间。\n- 6 和 10 的最大公约数为 2 ,插入第二和第三个结点之间。\n- 10 和 3 的最大公约数为 1 ,插入第三和第四个结点之间。\n所有相邻结点之间都插入完毕,返回链表。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/07/18/ex2_copy1.png]\n\n输入:head = [7]\n输出:[7]\n解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。\n没有相邻结点,所以返回初始链表。\n\n\n提示:\n\n * 链表中结点数目在 [1, 5000] 之间。\n * 1 <= Node.val <= 1000\n\"\"\"\n# Definition for singly-linked list.\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.next = next\nclass Solution:\n def insertGreatestCommonDivisors(self, head: Optional[ListNode]) -> Optional[ListNode]:\n ", "prompt_sft": "给你一个链表的头 head ,每个结点包含一个整数值。\n\n在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。\n\n请你返回插入之后的链表。\n\n两个数的 最大公约数 是可以被两个数字整除的最大正整数。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/18/ex1_copy.png]\n\n输入:head = [18,6,10,3]\n输出:[18,6,6,2,10,1,3]\n解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。\n- 18 和 6 的最大公约数为 6 ,插入第一和第二个结点之间。\n- 6 和 10 的最大公约数为 2 ,插入第二和第三个结点之间。\n- 10 和 3 的最大公约数为 1 ,插入第三和第四个结点之间。\n所有相邻结点之间都插入完毕,返回链表。\n\n示例 2:\n\n[https://assets.leetcode.com/uploads/2023/07/18/ex2_copy1.png]\n\n输入:head = [7]\n输出:[7]\n解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。\n没有相邻结点,所以返回初始链表。\n\n\n提示:\n\n * 链表中结点数目在 [1, 5000] 之间。\n * 1 <= Node.val <= 1000\n\n\n请完成下面的代码来解决上述问题:\n```python\n# Definition for singly-linked list.\nclass ListNode:\n def __init__(self, val=0, next=None):\n self.val = val\n self.next = next\nclass Solution:\n def insertGreatestCommonDivisors(self, head: Optional[ListNode]) -> Optional[ListNode]:\n \n```", "test": "\nmy_solution = Solution()\n\n_f1 = lambda lst: ListNode(lst[0], _f1(lst[1:])) if lst else None\n_f2 = lambda node: [node.val] + _f2(node.next) if node else []\n\n\ntest_input = { \"head\": _f1([18,6,10,3]) }\nassert _f2(my_solution.insertGreatestCommonDivisors(**test_input)) == [18,6,6,2,10,1,3]\n\ntest_input = { \"head\": _f1([7]) }\nassert _f2(my_solution.insertGreatestCommonDivisors
|
|||
|
{"task_id": "biweekly-contest-110-minimum-seconds-to-equalize-a-circular-array", "url": "https://leetcode.com/problems/minimum-seconds-to-equalize-a-circular-array", "title": "minimum-seconds-to-equalize-a-circular-array", "meta": {"questionId": "2920", "questionFrontendId": "2808", "title": "Minimum Seconds to Equalize a Circular Array", "titleSlug": "minimum-seconds-to-equalize-a-circular-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 481, "dislikes": 25, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始长度为 n 的数组 nums 。\n\n每一秒,你可以对数组执行以下操作:\n\n * 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。\n\n注意,所有元素会被同时替换。\n\n请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。\n\n示例 1:\n\n输入:nums = [1,2,1,2]\n输出:1\n解释:我们可以在 1 秒内将数组变成相等元素:\n- 第 1 秒,将每个位置的元素分别变为 [nums[3],nums[1],nums[3],nums[3]] 。变化后,nums = [2,2,2,2] 。\n1 秒是将数组变成相等元素所需要的最少秒数。\n\n示例 2:\n\n输入:nums = [2,1,3,3,2]\n输出:2\n解释:我们可以在 2 秒内将数组变成相等元素:\n- 第 1 秒,将每个位置的元素分别变为 [nums[0],nums[2],nums[2],nums[2],nums[3]] 。变化后,nums = [2,3,3,3,3] 。\n- 第 2 秒,将每个位置的元素分别变为 [nums[1],nums[1],nums[2],nums[3],nums[4]] 。变化后,nums = [3,3,3,3,3] 。\n2 秒是将数组变成相等元素所需要的最少秒数。\n\n示例 3:\n\n输入:nums = [5,5,5,5]\n输出:0\n解释:不需要执行任何操作,因为一开始数组中的元素已经全部相等。\n\n\n提示:\n\n * 1 <= n == nums.length <= 105\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def minimumSeconds(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始长度为 n 的数组 nums 。\n\n每一秒,你可以对数组执行以下操作:\n\n * 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] ,nums[(i - 1 + n) % n] 或者 nums[(i + 1) % n] 三者之一。\n\n注意,所有元素会被同时替换。\n\n请你返回将数组 nums 中所有元素变成相等元素所需要的 最少 秒数。\n\n示例 1:\n\n输入:nums = [1,2,1,2]\n输出:1\n解释:我们可以在 1 秒内将数组变成相等元素:\n- 第 1 秒,将每个位置的元素分别变为 [nums[3],nums[1],nums[3],nums[3]] 。变化后,nums = [2,2,2,2] 。\n1 秒是将数组变成相等元素所需要的最少秒数。\n\n示例 2:\n\n输入:nums = [2,1,3,3,2]\n输出:2\n解释:我们可以在 2 秒内将数组变成相等元素:\n- 第 1 秒,将每个位置的元素分别变为 [nums[0],nums[2],nums[2],nums[2],nums[3]] 。变化后,nums = [2,3,3,3,3] 。\n- 第 2 秒,将每个位置的元素分别变为 [nums[1],nums[1],nums[2],nums[3],nums[4]] 。变化后,nums = [3,3,3,3,3] 。\n2 秒是将数组变成相等元素所需要的最少秒数。\n\n示例 3:\n\n输入:nums = [5,5,5,5]\n输出:0\n解释:不需要执行任何操作,因为一开始数组中的元素已经全部相等。\n\n\n提示:\n\n * 1 <= n == nums.length <= 105\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumSeconds(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,1,2] }\nassert my_solution.minimumSeconds(**test_input) == 1\n\ntest_input = { \"nums\": [2,1,3,3,2] }\nassert my_solution.minimumSeconds(**test_input) == 2\n\ntest_input = { \"nums\": [5,5,5,5] }\nassert my_solution.minimumSeconds(**test_input) == 0\n\ntest_input = { \"nums\": [4,18] }\nassert my_solution.minimumSeconds(**test_input) == 1\n\ntest_input = { \"nums\": [11,7] }\nassert my_solution.minimumSeconds(**tes
|
|||
|
{"task_id": "biweekly-contest-110-minimum-time-to-make-array-sum-at-most-x", "url": "https://leetcode.com/problems/minimum-time-to-make-array-sum-at-most-x", "title": "minimum-time-to-make-array-sum-at-most-x", "meta": {"questionId": "2952", "questionFrontendId": "2809", "title": "Minimum Time to Make Array Sum At Most x", "titleSlug": "minimum-time-to-make-array-sum-at-most-x", "isPaidOnly": false, "difficulty": "Hard", "likes": 207, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒,对于所有下标 0 <= i < nums1.length ,nums1[i] 的值都增加 nums2[i] 。操作 完成后 ,你可以进行如下操作:\n\n * 选择任一满足 0 <= i < nums1.length 的下标 i ,并使 nums1[i] = 0 。\n\n同时给你一个整数 x 。\n\n请你返回使 nums1 中所有元素之和 小于等于 x 所需要的 最少 时间,如果无法实现,那么返回 -1 。\n\n示例 1:\n\n输入:nums1 = [1,2,3], nums2 = [1,2,3], x = 4\n输出:3\n解释:\n第 1 秒,我们对 i = 0 进行操作,得到 nums1 = [0,2+2,3+3] = [0,4,6] 。\n第 2 秒,我们对 i = 1 进行操作,得到 nums1 = [0+1,0,6+3] = [1,0,9] 。\n第 3 秒,我们对 i = 2 进行操作,得到 nums1 = [1+1,0+2,0] = [2,2,0] 。\n现在 nums1 的和为 4 。不存在更少次数的操作,所以我们返回 3 。\n\n示例 2:\n\n输入:nums1 = [1,2,3], nums2 = [3,3,3], x = 4\n输出:-1\n解释:不管如何操作,nums1 的和总是会超过 x 。\n\n\n提示:\n\n * 1 <= nums1.length <= 103\n * 1 <= nums1[i] <= 103\n * 0 <= nums2[i] <= 103\n * nums1.length == nums2.length\n * 0 <= x <= 106\n\"\"\"\nclass Solution:\n def minimumTime(self, nums1: List[int], nums2: List[int], x: int) -> int:\n ", "prompt_sft": "给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒,对于所有下标 0 <= i < nums1.length ,nums1[i] 的值都增加 nums2[i] 。操作 完成后 ,你可以进行如下操作:\n\n * 选择任一满足 0 <= i < nums1.length 的下标 i ,并使 nums1[i] = 0 。\n\n同时给你一个整数 x 。\n\n请你返回使 nums1 中所有元素之和 小于等于 x 所需要的 最少 时间,如果无法实现,那么返回 -1 。\n\n示例 1:\n\n输入:nums1 = [1,2,3], nums2 = [1,2,3], x = 4\n输出:3\n解释:\n第 1 秒,我们对 i = 0 进行操作,得到 nums1 = [0,2+2,3+3] = [0,4,6] 。\n第 2 秒,我们对 i = 1 进行操作,得到 nums1 = [0+1,0,6+3] = [1,0,9] 。\n第 3 秒,我们对 i = 2 进行操作,得到 nums1 = [1+1,0+2,0] = [2,2,0] 。\n现在 nums1 的和为 4 。不存在更少次数的操作,所以我们返回 3 。\n\n示例 2:\n\n输入:nums1 = [1,2,3], nums2 = [3,3,3], x = 4\n输出:-1\n解释:不管如何操作,nums1 的和总是会超过 x 。\n\n\n提示:\n\n * 1 <= nums1.length <= 103\n * 1 <= nums1[i] <= 103\n * 0 <= nums2[i] <= 103\n * nums1.length == nums2.length\n * 0 <= x <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumTime(self, nums1: List[int], nums2: List[int], x: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums1\": [1,2,3], \"nums2\": [1,2,3], \"x\": 4 }\nassert my_solution.minimumTime(**test_input) == 3\n\ntest_input = { \"nums1\": [1,2,3], \"nums2\": [3,3,3], \"x\": 4 }\nassert my_solution.minimumTime(**test_input) == -1\n\ntest_input = { \"nums1\": [4,4,9,10], \"nums2\": [4,4,1,3], \"x\": 16 }\nassert my_solution.minimumTime(**test_input) == 4\n\ntest_input = { \"nums1\": [5,3], \"nums2\": [3,2], \"x\": 4 }\nassert my_solution.minimumTime(**test_input) == 2\n\ntest_input = { \"nums1\": [4,5,3,2,3,9,5,7,10,4], \"nums2\": [4,4,0,4,1,2,4,0,4,0], \"x\": 47 }\nassert my_solution.minimumTime(**test_input) == -1\n\ntest_input = { \"nums1\": [7,9,8,5,8,3], \"nums2\": [0,1,4,2,3,1], \"x\": 37 }\nassert my_solution.minimumTime(**test_input) == 2\n\ntest_input = { \"nums1\": [8,2,3],
|
|||
|
{"task_id": "weekly-contest-356-number-of-employees-who-met-the-target", "url": "https://leetcode.com/problems/number-of-employees-who-met-the-target", "title": "number-of-employees-who-met-the-target", "meta": {"questionId": "2876", "questionFrontendId": "2798", "title": "Number of Employees Who Met the Target", "titleSlug": "number-of-employees-who-met-the-target", "isPaidOnly": false, "difficulty": "Easy", "likes": 362, "dislikes": 46, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n公司里共有 n 名员工,按从 0 到 n - 1 编号。每个员工 i 已经在公司工作了 hours[i] 小时。\n\n公司要求每位员工工作 至少 target 小时。\n\n给你一个下标从 0 开始、长度为 n 的非负整数数组 hours 和一个非负整数 target 。\n\n请你用整数表示并返回工作至少 target 小时的员工数。\n\n示例 1:\n\n输入:hours = [0,1,2,3,4], target = 2\n输出:3\n解释:公司要求每位员工工作至少 2 小时。\n- 员工 0 工作 0 小时,不满足要求。\n- 员工 1 工作 1 小时,不满足要求。\n- 员工 2 工作 2 小时,满足要求。\n- 员工 3 工作 3 小时,满足要求。\n- 员工 4 工作 4 小时,满足要求。\n共有 3 位满足要求的员工。\n\n示例 2:\n\n输入:hours = [5,1,4,2,2], target = 6\n输出:0\n解释:公司要求每位员工工作至少 6 小时。\n共有 0 位满足要求的员工。\n\n\n提示:\n\n * 1 <= n == hours.length <= 50\n * 0 <= hours[i], target <= 105\n\"\"\"\nclass Solution:\n def numberOfEmployeesWhoMetTarget(self, hours: List[int], target: int) -> int:\n ", "prompt_sft": "公司里共有 n 名员工,按从 0 到 n - 1 编号。每个员工 i 已经在公司工作了 hours[i] 小时。\n\n公司要求每位员工工作 至少 target 小时。\n\n给你一个下标从 0 开始、长度为 n 的非负整数数组 hours 和一个非负整数 target 。\n\n请你用整数表示并返回工作至少 target 小时的员工数。\n\n示例 1:\n\n输入:hours = [0,1,2,3,4], target = 2\n输出:3\n解释:公司要求每位员工工作至少 2 小时。\n- 员工 0 工作 0 小时,不满足要求。\n- 员工 1 工作 1 小时,不满足要求。\n- 员工 2 工作 2 小时,满足要求。\n- 员工 3 工作 3 小时,满足要求。\n- 员工 4 工作 4 小时,满足要求。\n共有 3 位满足要求的员工。\n\n示例 2:\n\n输入:hours = [5,1,4,2,2], target = 6\n输出:0\n解释:公司要求每位员工工作至少 6 小时。\n共有 0 位满足要求的员工。\n\n\n提示:\n\n * 1 <= n == hours.length <= 50\n * 0 <= hours[i], target <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfEmployeesWhoMetTarget(self, hours: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"hours\": [0,1,2,3,4], \"target\": 2 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 3\n\ntest_input = { \"hours\": [5,1,4,2,2], \"target\": 6 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 0\n\ntest_input = { \"hours\": [98], \"target\": 5 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 1\n\ntest_input = { \"hours\": [19], \"target\": 13 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 1\n\ntest_input = { \"hours\": [70], \"target\": 13 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 1\n\ntest_input = { \"hours\": [26], \"target\": 14 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 1\n\ntest_input = { \"hours\": [2], \"target\": 16 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 0\n\ntest_input = { \"hours\": [77], \"target\": 19 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 1\n\ntest_input = { \"hours\": [6], \"target\": 21 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) == 0\n\ntest_input = { \"hours\": [27], \"target\": 21 }\nassert my_solution.numberOfEmployeesWhoMetTarget(**test_input) ==
|
|||
|
{"task_id": "weekly-contest-356-count-complete-subarrays-in-an-array", "url": "https://leetcode.com/problems/count-complete-subarrays-in-an-array", "title": "count-complete-subarrays-in-an-array", "meta": {"questionId": "2856", "questionFrontendId": "2799", "title": "Count Complete Subarrays in an Array", "titleSlug": "count-complete-subarrays-in-an-array", "isPaidOnly": false, "difficulty": "Medium", "likes": 464, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个由 正 整数组成的数组 nums 。\n\n如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :\n\n * 子数组中 不同 元素的数目等于整个数组不同元素的数目。\n\n返回数组中 完全子数组 的数目。\n\n子数组 是数组中的一个连续非空序列。\n\n示例 1:\n\n输入:nums = [1,3,1,2,2]\n输出:4\n解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。\n\n示例 2:\n\n输入:nums = [5,5,5,5]\n输出:10\n解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 2000\n\"\"\"\nclass Solution:\n def countCompleteSubarrays(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个由 正 整数组成的数组 nums 。\n\n如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :\n\n * 子数组中 不同 元素的数目等于整个数组不同元素的数目。\n\n返回数组中 完全子数组 的数目。\n\n子数组 是数组中的一个连续非空序列。\n\n示例 1:\n\n输入:nums = [1,3,1,2,2]\n输出:4\n解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。\n\n示例 2:\n\n输入:nums = [5,5,5,5]\n输出:10\n解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。\n\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= 2000\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countCompleteSubarrays(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,1,2,2] }\nassert my_solution.countCompleteSubarrays(**test_input) == 4\n\ntest_input = { \"nums\": [5,5,5,5] }\nassert my_solution.countCompleteSubarrays(**test_input) == 10\n\ntest_input = { \"nums\": [459,459,962,1579,1435,756,1872,1597] }\nassert my_solution.countCompleteSubarrays(**test_input) == 2\n\ntest_input = { \"nums\": [1786,1786,1786,114] }\nassert my_solution.countCompleteSubarrays(**test_input) == 3\n\ntest_input = { \"nums\": [1632,1632,528,359,1671,1632,511,1087,424,1684] }\nassert my_solution.countCompleteSubarrays(**test_input) == 3\n\ntest_input = { \"nums\": [1430,12,1430,1075,1722] }\nassert my_solution.countCompleteSubarrays(**test_input) == 2\n\ntest_input = { \"nums\": [1917,1917,608,608,1313,751,558,1561,608] }\nassert my_solution.countCompleteSubarrays(**test_input) == 4\n\ntest_input = { \"nums\": [254,1690,1690,1068,1779] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [1116] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [1677,1677,1352,1219,1666,1677,1892,1892,319] }\nassert my_solution.countCompleteSubarrays(**test_input) == 3\n\ntest_input = { \"nums\": [1386,1997,1997,574,574,1360,989] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [50,48,1118,540,1248,1984,1698,41,1984,186] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [273,524,40,1323,1323] }\nassert my_solution.countCompleteSubarrays(**test_input) == 2\n\ntest_input = { \"nums\": [246,376,828,191,1942,210] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [463,1497,1676,127,1379,17,1075,190] }\nassert my_solution.countCompleteSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [7
|
|||
|
{"task_id": "weekly-contest-356-shortest-string-that-contains-three-strings", "url": "https://leetcode.com/problems/shortest-string-that-contains-three-strings", "title": "shortest-string-that-contains-three-strings", "meta": {"questionId": "2877", "questionFrontendId": "2800", "title": "Shortest String That Contains Three Strings", "titleSlug": "shortest-string-that-contains-three-strings", "isPaidOnly": false, "difficulty": "Medium", "likes": 301, "dislikes": 244, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你三个字符串 a ,b 和 c , 你的任务是找到长度 最短 的字符串,且这三个字符串都是它的 子字符串 。\n\n如果有多个这样的字符串,请你返回 字典序最小 的一个。\n\n请你返回满足题目要求的字符串。\n\n注意:\n\n * 两个长度相同的字符串 a 和 b ,如果在第一个不相同的字符处,a 的字母在字母表中比 b 的字母 靠前 ,那么字符串 a 比字符串 b 字典序小 。\n * 子字符串 是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:a = \"abc\", b = \"bca\", c = \"aaa\"\n输出:\"aaabca\"\n解释:字符串 \"aaabca\" 包含所有三个字符串:a = ans[2...4] ,b = ans[3..5] ,c = ans[0..2] 。结果字符串的长度至少为 6 ,且\"aaabca\" 是字典序最小的一个。\n\n示例 2:\n\n输入:a = \"ab\", b = \"ba\", c = \"aba\"\n输出:\"aba\"\n解释:字符串 \"aba\" 包含所有三个字符串:a = ans[0..1] ,b = ans[1..2] ,c = ans[0..2] 。由于 c 的长度为 3 ,结果字符串的长度至少为 3 。\"aba\" 是字典序最小的一个。\n\n\n提示:\n\n * 1 <= a.length, b.length, c.length <= 100\n * a ,b ,c 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def minimumString(self, a: str, b: str, c: str) -> str:\n ", "prompt_sft": "给你三个字符串 a ,b 和 c , 你的任务是找到长度 最短 的字符串,且这三个字符串都是它的 子字符串 。\n\n如果有多个这样的字符串,请你返回 字典序最小 的一个。\n\n请你返回满足题目要求的字符串。\n\n注意:\n\n * 两个长度相同的字符串 a 和 b ,如果在第一个不相同的字符处,a 的字母在字母表中比 b 的字母 靠前 ,那么字符串 a 比字符串 b 字典序小 。\n * 子字符串 是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:a = \"abc\", b = \"bca\", c = \"aaa\"\n输出:\"aaabca\"\n解释:字符串 \"aaabca\" 包含所有三个字符串:a = ans[2...4] ,b = ans[3..5] ,c = ans[0..2] 。结果字符串的长度至少为 6 ,且\"aaabca\" 是字典序最小的一个。\n\n示例 2:\n\n输入:a = \"ab\", b = \"ba\", c = \"aba\"\n输出:\"aba\"\n解释:字符串 \"aba\" 包含所有三个字符串:a = ans[0..1] ,b = ans[1..2] ,c = ans[0..2] 。由于 c 的长度为 3 ,结果字符串的长度至少为 3 。\"aba\" 是字典序最小的一个。\n\n\n提示:\n\n * 1 <= a.length, b.length, c.length <= 100\n * a ,b ,c 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumString(self, a: str, b: str, c: str) -> str:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"a\": \"abc\", \"b\": \"bca\", \"c\": \"aaa\" }\nassert my_solution.minimumString(**test_input) == \"aaabca\"\n\ntest_input = { \"a\": \"ab\", \"b\": \"ba\", \"c\": \"aba\" }\nassert my_solution.minimumString(**test_input) == \"aba\"\n\ntest_input = { \"a\": \"xyyyz\", \"b\": \"xzyz\", \"c\": \"zzz\" }\nassert my_solution.minimumString(**test_input) == \"xyyyzxzyzzz\"\n\ntest_input = { \"a\": \"a\", \"b\": \"a\", \"c\": \"a\" }\nassert my_solution.minimumString(**test_input) == \"a\"\n\ntest_input = { \"a\": \"a\", \"b\": \"a\", \"c\": \"b\" }\nassert my_solution.minimumString(**test_input) == \"ab\"\n\ntest_input = { \"a\": \"a\", \"b\": \"c\", \"c\": \"a\" }\nassert my_solution.minimumString(**test_input) == \"ac\"\n\ntest_input
|
|||
|
{"task_id": "weekly-contest-356-count-stepping-numbers-in-range", "url": "https://leetcode.com/problems/count-stepping-numbers-in-range", "title": "count-stepping-numbers-in-range", "meta": {"questionId": "2921", "questionFrontendId": "2801", "title": "Count Stepping Numbers in Range", "titleSlug": "count-stepping-numbers-in-range", "isPaidOnly": false, "difficulty": "Hard", "likes": 312, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个正整数 low 和 high ,都用字符串表示,请你统计闭区间 [low, high] 内的 步进数字 数目。\n\n如果一个整数相邻数位之间差的绝对值都 恰好 是 1 ,那么这个数字被称为 步进数字 。\n\n请你返回一个整数,表示闭区间 [low, high] 之间步进数字的数目。\n\n由于答案可能很大,请你将它对 109 + 7 取余 后返回。\n\n注意:步进数字不能有前导 0 。\n\n示例 1:\n\n输入:low = \"1\", high = \"11\"\n输出:10\n解释:区间 [1,11] 内的步进数字为 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 和 10 。总共有 10 个步进数字。所以输出为 10 。\n\n示例 2:\n\n输入:low = \"90\", high = \"101\"\n输出:2\n解释:区间 [90,101] 内的步进数字为 98 和 101 。总共有 2 个步进数字。所以输出为 2 。\n\n提示:\n\n * 1 <= int(low) <= int(high) < 10100\n * 1 <= low.length, high.length <= 100\n * low 和 high 只包含数字。\n * low 和 high 都不含前导 0 。\n\"\"\"\nclass Solution:\n def countSteppingNumbers(self, low: str, high: str) -> int:\n ", "prompt_sft": "给你两个正整数 low 和 high ,都用字符串表示,请你统计闭区间 [low, high] 内的 步进数字 数目。\n\n如果一个整数相邻数位之间差的绝对值都 恰好 是 1 ,那么这个数字被称为 步进数字 。\n\n请你返回一个整数,表示闭区间 [low, high] 之间步进数字的数目。\n\n由于答案可能很大,请你将它对 109 + 7 取余 后返回。\n\n注意:步进数字不能有前导 0 。\n\n示例 1:\n\n输入:low = \"1\", high = \"11\"\n输出:10\n解释:区间 [1,11] 内的步进数字为 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 和 10 。总共有 10 个步进数字。所以输出为 10 。\n\n示例 2:\n\n输入:low = \"90\", high = \"101\"\n输出:2\n解释:区间 [90,101] 内的步进数字为 98 和 101 。总共有 2 个步进数字。所以输出为 2 。\n\n提示:\n\n * 1 <= int(low) <= int(high) < 10100\n * 1 <= low.length, high.length <= 100\n * low 和 high 只包含数字。\n * low 和 high 都不含前导 0 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countSteppingNumbers(self, low: str, high: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"low\": \"1\", \"high\": \"11\" }\nassert my_solution.countSteppingNumbers(**test_input) == 10\n\ntest_input = { \"low\": \"90\", \"high\": \"101\" }\nassert my_solution.countSteppingNumbers(**test_input) == 2\n\ntest_input = { \"low\": \"2\", \"high\": \"40\" }\nassert my_solution.countSteppingNumbers(**test_input) == 14\n\ntest_input = { \"low\": \"26\", \"high\": \"60\" }\nassert my_solution.countSteppingNumbers(**test_input) == 6\n\ntest_input = { \"low\": \"40\", \"high\": \"70\" }\nassert my_solution.countSteppingNumbers(**test_input) == 6\n\ntest_input = { \"low\": \"46\", \"high\": \"66\" }\nassert my_solution.countSteppingNumbers(**test_input) == 3\n\ntest_input = { \"low\": \"58\", \"high\": \"58\" }\nassert my_solution.countSteppingNumbers(**test_input) == 0\n\ntest_input = { \"low\": \"23\", \"high\": \"99\" }\nassert my_solution.countSteppingNumbers(**test_input) == 14\n\ntest_input = { \"low\": \"44\", \"high\": \"86\" }\nassert my_solution.countSteppingNumbers(**test_input) == 7\n\ntest_input = { \"low\": \"20\", \"high\": \"111\" }\nassert my_solution.countSteppingNumbers(**test_input) == 16\n\ntest_input = { \"low\": \"70\", \"high\": \"75\" }\nassert my_solution.countSteppingNumbers(*
|
|||
|
{"task_id": "weekly-contest-355-split-strings-by-separator", "url": "https://leetcode.com/problems/split-strings-by-separator", "title": "split-strings-by-separator", "meta": {"questionId": "2881", "questionFrontendId": "2788", "title": "Split Strings by Separator", "titleSlug": "split-strings-by-separator", "isPaidOnly": false, "difficulty": "Easy", "likes": 262, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。\n\n返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。\n\n注意\n\n * separator 用于决定拆分发生的位置,但它不包含在结果字符串中。\n * 拆分可能形成两个以上的字符串。\n * 结果字符串必须保持初始相同的先后顺序。\n\n示例 1:\n\n输入:words = [\"one.two.three\",\"four.five\",\"six\"], separator = \".\"\n输出:[\"one\",\"two\",\"three\",\"four\",\"five\",\"six\"]\n解释:在本示例中,我们进行下述拆分:\n\n\"one.two.three\" 拆分为 \"one\", \"two\", \"three\"\n\"four.five\" 拆分为 \"four\", \"five\"\n\"six\" 拆分为 \"six\"\n\n因此,结果数组为 [\"one\",\"two\",\"three\",\"four\",\"five\",\"six\"] 。\n\n示例 2:\n\n输入:words = [\"$easy$\",\"$problem$\"], separator = \"$\"\n输出:[\"easy\",\"problem\"]\n解释:在本示例中,我们进行下述拆分:\n\n\"$easy$\" 拆分为 \"easy\"(不包括空字符串)\n\"$problem$\" 拆分为 \"problem\"(不包括空字符串)\n\n因此,结果数组为 [\"easy\",\"problem\"] 。\n\n示例 3:\n\n输入:words = [\"|||\"], separator = \"|\"\n输出:[]\n解释:在本示例中,\"|||\" 的拆分结果将只包含一些空字符串,所以我们返回一个空数组 [] 。\n\n提示:\n\n * 1 <= words.length <= 100\n * 1 <= words[i].length <= 20\n * words[i] 中的字符要么是小写英文字母,要么就是字符串 \".,|$#@\" 中的字符(不包括引号)\n * separator 是字符串 \".,|$#@\" 中的某个字符(不包括引号)\n\"\"\"\nclass Solution:\n def splitWordsBySeparator(self, words: List[str], separator: str) -> List[str]:\n ", "prompt_sft": "给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。\n\n返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串 。\n\n注意\n\n * separator 用于决定拆分发生的位置,但它不包含在结果字符串中。\n * 拆分可能形成两个以上的字符串。\n * 结果字符串必须保持初始相同的先后顺序。\n\n示例 1:\n\n输入:words = [\"one.two.three\",\"four.five\",\"six\"], separator = \".\"\n输出:[\"one\",\"two\",\"three\",\"four\",\"five\",\"six\"]\n解释:在本示例中,我们进行下述拆分:\n\n\"one.two.three\" 拆分为 \"one\", \"two\", \"three\"\n\"four.five\" 拆分为 \"four\", \"five\"\n\"six\" 拆分为 \"six\"\n\n因此,结果数组为 [\"one\",\"two\",\"three\",\"four\",\"five\",\"six\"] 。\n\n示例 2:\n\n输入:words = [\"$easy$\",\"$problem$\"], separator = \"$\"\n输出:[\"easy\",\"problem\"]\n解释:在本示例中,我们进行下述拆分:\n\n\"$easy$\" 拆分为 \"easy\"(不包括空字符串)\n\"$problem$\" 拆分为 \"problem\"(不包括空字符串)\n\n因此,结果数组为 [\"easy\",\"problem\"] 。\n\n示例 3:\n\n输入:words = [\"|||\"], separator = \"|\"\n输出:[]\n解释:在本示例中,\"|||\" 的拆分结果将只包含一些空字符串,所以我们返回一个空数组 [] 。\n\n提示:\n\n * 1 <= words.length <= 100\n * 1 <= words[i].length <= 20\n * words[i] 中的字符要么是小写英文字母,要么就是字符串 \".,|$#@\" 中的字符(不包括引号)\n * separator 是字符串 \".,|$#@\" 中的某个字符(不包括引号)\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def splitWordsBySeparator(self, words: List[str], separator: str
|
|||
|
{"task_id": "weekly-contest-355-largest-element-in-an-array-after-merge-operations", "url": "https://leetcode.com/problems/largest-element-in-an-array-after-merge-operations", "title": "largest-element-in-an-array-after-merge-operations", "meta": {"questionId": "2872", "questionFrontendId": "2789", "title": "Largest Element in an Array after Merge Operations", "titleSlug": "largest-element-in-an-array-after-merge-operations", "isPaidOnly": false, "difficulty": "Medium", "likes": 413, "dislikes": 26, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、由正整数组成的数组 nums 。\n\n你可以在数组上执行下述操作 任意 次:\n\n * 选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ,并从数组中删除元素 nums[i] 。\n\n返回你可以从最终数组中获得的 最大 元素的值。\n\n示例 1:\n\n输入:nums = [2,3,7,9,3]\n输出:21\n解释:我们可以在数组上执行下述操作:\n- 选中 i = 0 ,得到数组 nums = [5,7,9,3] 。\n- 选中 i = 1 ,得到数组 nums = [5,16,3] 。\n- 选中 i = 0 ,得到数组 nums = [21,3] 。\n最终数组中的最大元素是 21 。可以证明我们无法获得更大的元素。\n\n示例 2:\n\n输入:nums = [5,3,3]\n输出:11\n解释:我们可以在数组上执行下述操作:\n- 选中 i = 1 ,得到数组 nums = [5,6] 。\n- 选中 i = 0 ,得到数组 nums = [11] 。\n最终数组中只有一个元素,即 11 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def maxArrayValue(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、由正整数组成的数组 nums 。\n\n你可以在数组上执行下述操作 任意 次:\n\n * 选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ,并从数组中删除元素 nums[i] 。\n\n返回你可以从最终数组中获得的 最大 元素的值。\n\n示例 1:\n\n输入:nums = [2,3,7,9,3]\n输出:21\n解释:我们可以在数组上执行下述操作:\n- 选中 i = 0 ,得到数组 nums = [5,7,9,3] 。\n- 选中 i = 1 ,得到数组 nums = [5,16,3] 。\n- 选中 i = 0 ,得到数组 nums = [21,3] 。\n最终数组中的最大元素是 21 。可以证明我们无法获得更大的元素。\n\n示例 2:\n\n输入:nums = [5,3,3]\n输出:11\n解释:我们可以在数组上执行下述操作:\n- 选中 i = 1 ,得到数组 nums = [5,6] 。\n- 选中 i = 0 ,得到数组 nums = [11] 。\n最终数组中只有一个元素,即 11 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxArrayValue(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,3,7,9,3] }\nassert my_solution.maxArrayValue(**test_input) == 21\n\ntest_input = { \"nums\": [5,3,3] }\nassert my_solution.maxArrayValue(**test_input) == 11\n\ntest_input = { \"nums\": [77] }\nassert my_solution.maxArrayValue(**test_input) == 77\n\ntest_input = { \"nums\": [34,95,50,12,25,100,21,3,25,16,76,73,93,46,18] }\nassert my_solution.maxArrayValue(**test_input) == 623\n\ntest_input = { \"nums\": [40,15,35,98,77,79,24,62,53,84,97,16,30,22,49] }\nassert my_solution.maxArrayValue(**test_input) == 781\n\ntest_input = { \"nums\": [64,35,42,19,95,8,83,89,33,21,97,11,51,93,36,34,67,53] }\nassert my_solution.maxArrayValue(**test_input) == 878\n\ntest_input = { \"nums\": [65,68,55,6,79,30,81,25,61,2,28,59,63,15,35,8,10,83] }\nassert my_solution.maxArrayValue(**test_input) == 773\n\ntest_input = { \"nums\": [56] }\nassert my_solution.maxArrayValue(**test_input) == 56\n\ntest_input = { \"nums\": [100] }\nassert my_solution.maxArrayValue(**test_input) == 100\n\ntest_input = { \"nums\": [35,23,71,38] }\nassert my_solution.maxArrayValue(**test_input) =
|
|||
|
{"task_id": "weekly-contest-355-maximum-number-of-groups-with-increasing-length", "url": "https://leetcode.com/problems/maximum-number-of-groups-with-increasing-length", "title": "maximum-number-of-groups-with-increasing-length", "meta": {"questionId": "2919", "questionFrontendId": "2790", "title": "Maximum Number of Groups With Increasing Length", "titleSlug": "maximum-number-of-groups-with-increasing-length", "isPaidOnly": false, "difficulty": "Hard", "likes": 383, "dislikes": 38, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。\n\n你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件:\n\n * 每个组必须由 不同 的数字组成,也就是说,单个组内不能存在重复的数字。\n * 每个组(除了第一个)的长度必须 严格大于 前一个组。\n\n在满足所有条件的情况下,以整数形式返回可以创建的最大组数。\n\n示例 1:\n\n输入:usageLimits = [1,2,5]\n输出:3\n解释:在这个示例中,我们可以使用 0 至多一次,使用 1 至多 2 次,使用 2 至多 5 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [2] 。\n组 2 包含数字 [1,2] 。\n组 3 包含数字 [0,1,2] 。\n可以证明能够创建的最大组数是 3 。\n所以,输出是 3 。\n\n示例 2:\n\n输入:usageLimits = [2,1,2]\n输出:2\n解释:在这个示例中,我们可以使用 0 至多 2 次,使用 1 至多 1 次,使用 2 至多 2 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [0] 。\n组 2 包含数字 [1,2] 。\n可以证明能够创建的最大组数是 2 。\n所以,输出是 2 。\n\n示例 3:\n\n输入:usageLimits = [1,1]\n输出:1\n解释:在这个示例中,我们可以使用 0 和 1 至多 1 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [0] 。\n可以证明能够创建的最大组数是 1 。\n所以,输出是 1 。\n\n\n提示:\n\n * 1 <= usageLimits.length <= 105\n * 1 <= usageLimits[i] <= 109\n\"\"\"\nclass Solution:\n def maxIncreasingGroups(self, usageLimits: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。\n\n你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件:\n\n * 每个组必须由 不同 的数字组成,也就是说,单个组内不能存在重复的数字。\n * 每个组(除了第一个)的长度必须 严格大于 前一个组。\n\n在满足所有条件的情况下,以整数形式返回可以创建的最大组数。\n\n示例 1:\n\n输入:usageLimits = [1,2,5]\n输出:3\n解释:在这个示例中,我们可以使用 0 至多一次,使用 1 至多 2 次,使用 2 至多 5 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [2] 。\n组 2 包含数字 [1,2] 。\n组 3 包含数字 [0,1,2] 。\n可以证明能够创建的最大组数是 3 。\n所以,输出是 3 。\n\n示例 2:\n\n输入:usageLimits = [2,1,2]\n输出:2\n解释:在这个示例中,我们可以使用 0 至多 2 次,使用 1 至多 1 次,使用 2 至多 2 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [0] 。\n组 2 包含数字 [1,2] 。\n可以证明能够创建的最大组数是 2 。\n所以,输出是 2 。\n\n示例 3:\n\n输入:usageLimits = [1,1]\n输出:1\n解释:在这个示例中,我们可以使用 0 和 1 至多 1 次。\n一种既能满足所有条件,又能创建最多组的方式是:\n组 1 包含数字 [0] 。\n可以证明能够创建的最大组数是 1 。\n所以,输出是 1 。\n\n\n提示:\n\n * 1 <= usageLimits.length <=
|
|||
|
{"task_id": "weekly-contest-355-count-paths-that-can-form-a-palindrome-in-a-tree", "url": "https://leetcode.com/problems/count-paths-that-can-form-a-palindrome-in-a-tree", "title": "count-paths-that-can-form-a-palindrome-in-a-tree", "meta": {"questionId": "2905", "questionFrontendId": "2791", "title": "Count Paths That Can Form a Palindrome in a Tree", "titleSlug": "count-paths-that-can-form-a-palindrome-in-a-tree", "isPaidOnly": false, "difficulty": "Hard", "likes": 343, "dislikes": 4, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一棵 树(即,一个连通、无向且无环的图),根 节点为 0 ,由编号从 0 到 n - 1 的 n 个节点组成。这棵树用一个长度为 n 、下标从 0 开始的数组 parent 表示,其中 parent[i] 为节点 i 的父节点,由于节点 0 为根节点,所以 parent[0] == -1 。\n\n另给你一个长度为 n 的字符串 s ,其中 s[i] 是分配给 i 和 parent[i] 之间的边的字符。s[0] 可以忽略。\n\n找出满足 u < v ,且从 u 到 v 的路径上分配的字符可以 重新排列 形成 回文 的所有节点对 (u, v) ,并返回节点对的数目。\n\n如果一个字符串正着读和反着读都相同,那么这个字符串就是一个 回文 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/15/treedrawio-8drawio.png]\n\n输入:parent = [-1,0,0,1,1,2], s = \"acaabc\"\n输出:8\n解释:符合题目要求的节点对分别是:\n- (0,1)、(0,2)、(1,3)、(1,4) 和 (2,5) ,路径上只有一个字符,满足回文定义。\n- (2,3),路径上字符形成的字符串是 \"aca\" ,满足回文定义。\n- (1,5),路径上字符形成的字符串是 \"cac\" ,满足回文定义。\n- (3,5),路径上字符形成的字符串是 \"acac\" ,可以重排形成回文 \"acca\" 。\n\n示例 2:\n\n输入:parent = [-1,0,0,0,0], s = \"aaaaa\"\n输出:10\n解释:任何满足 u < v 的节点对 (u,v) 都符合题目要求。\n\n\n提示:\n\n * n == parent.length == s.length\n * 1 <= n <= 105\n * 对于所有 i >= 1 ,0 <= parent[i] <= n - 1 均成立\n * parent[0] == -1\n * parent 表示一棵有效的树\n * s 仅由小写英文字母组成\n\"\"\"\nclass Solution:\n def countPalindromePaths(self, parent: List[int], s: str) -> int:\n ", "prompt_sft": "给你一棵 树(即,一个连通、无向且无环的图),根 节点为 0 ,由编号从 0 到 n - 1 的 n 个节点组成。这棵树用一个长度为 n 、下标从 0 开始的数组 parent 表示,其中 parent[i] 为节点 i 的父节点,由于节点 0 为根节点,所以 parent[0] == -1 。\n\n另给你一个长度为 n 的字符串 s ,其中 s[i] 是分配给 i 和 parent[i] 之间的边的字符。s[0] 可以忽略。\n\n找出满足 u < v ,且从 u 到 v 的路径上分配的字符可以 重新排列 形成 回文 的所有节点对 (u, v) ,并返回节点对的数目。\n\n如果一个字符串正着读和反着读都相同,那么这个字符串就是一个 回文 。\n\n示例 1:\n\n[https://assets.leetcode.com/uploads/2023/07/15/treedrawio-8drawio.png]\n\n输入:parent = [-1,0,0,1,1,2], s = \"acaabc\"\n输出:8\n解释:符合题目要求的节点对分别是:\n- (0,1)、(0,2)、(1,3)、(1,4) 和 (2,5) ,路径上只有一个字符,满足回文定义。\n- (2,3),路径上字符形成的字符串是 \"aca\" ,满足回文定义。\n- (1,5),路径上字符形成的字符串是 \"cac\" ,满足回文定义。\n- (3,5),路径上字符形成的字符串是 \"acac\" ,可以重排形成回文 \"acca\" 。\n\n示例 2:\n\n输入:parent = [-1,0,0,0,0], s = \"aaaaa\"\n输出:10\n解释:任何满足 u < v 的节点对 (u,v) 都符合题目要求。\n\n\n提示:\n\n * n == parent.length == s.length\n * 1 <= n <= 105\n * 对于所有 i >= 1 ,0 <= parent[i] <= n - 1 均成立\n * parent[0] == -1\n * parent 表示一棵有效的树\n * s 仅由小写英文字母组成\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def countPalindromePaths(self, parent: List[
|
|||
|
{"task_id": "biweekly-contest-109-check-if-array-is-good", "url": "https://leetcode.com/problems/check-if-array-is-good", "title": "check-if-array-is-good", "meta": {"questionId": "2892", "questionFrontendId": "2784", "title": "Check if Array is Good", "titleSlug": "check-if-array-is-good", "isPaidOnly": false, "difficulty": "Easy", "likes": 233, "dislikes": 43, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数数组 nums ,如果它是数组 base[n] 的一个排列,我们称它是个 好 数组。\n\nbase[n] = [1, 2, ..., n - 1, n, n] (换句话说,它是一个长度为 n + 1 且包含 1 到 n - 1 恰好各一次,包含 n 两次的一个数组)。比方说,base[1] = [1, 1] ,base[3] = [1, 2, 3, 3] 。\n\n如果数组是一个好数组,请你返回 true ,否则返回 false 。\n\n注意:数组的排列是这些数字按任意顺序排布后重新得到的数组。\n\n示例 1:\n\n输入:nums = [2, 1, 3]\n输出:false\n解释:因为数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 。但是 base[3] 有 4 个元素,但数组 nums 只有 3 个元素,所以无法得到 base[3] = [1, 2, 3, 3] 的排列,所以答案为 false 。\n\n示例 2:\n\n输入:nums = [1, 3, 3, 2]\n输出:true\n解释:因为数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 ,可以看出数组是 base[3] = [1, 2, 3, 3] 的一个排列(交换 nums 中第二个和第四个元素)。所以答案为 true 。\n\n示例 3:\n\n输入:nums = [1, 1]\n输出:true\n解释:因为数组的最大元素是 1 ,唯一可以构成这个数组的 base[n] 对应的 n = 1,可以看出数组是 base[1] = [1, 1] 的一个排列。所以答案为 true 。\n\n示例 4:\n\n输入:nums = [3, 4, 4, 1, 2, 1]\n输出:false\n解释:因为数组的最大元素是 4 ,唯一可以构成这个数组的 base[n] 对应的 n = 4 。但是 base[n] 有 5 个元素而 nums 有 6 个元素。所以答案为 false 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= num[i] <= 200\n\"\"\"\nclass Solution:\n def isGood(self, nums: List[int]) -> bool:\n ", "prompt_sft": "给你一个整数数组 nums ,如果它是数组 base[n] 的一个排列,我们称它是个 好 数组。\n\nbase[n] = [1, 2, ..., n - 1, n, n] (换句话说,它是一个长度为 n + 1 且包含 1 到 n - 1 恰好各一次,包含 n 两次的一个数组)。比方说,base[1] = [1, 1] ,base[3] = [1, 2, 3, 3] 。\n\n如果数组是一个好数组,请你返回 true ,否则返回 false 。\n\n注意:数组的排列是这些数字按任意顺序排布后重新得到的数组。\n\n示例 1:\n\n输入:nums = [2, 1, 3]\n输出:false\n解释:因为数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 。但是 base[3] 有 4 个元素,但数组 nums 只有 3 个元素,所以无法得到 base[3] = [1, 2, 3, 3] 的排列,所以答案为 false 。\n\n示例 2:\n\n输入:nums = [1, 3, 3, 2]\n输出:true\n解释:因为数组的最大元素是 3 ,唯一可以构成这个数组的 base[n] 对应的 n = 3 ,可以看出数组是 base[3] = [1, 2, 3, 3] 的一个排列(交换 nums 中第二个和第四个元素)。所以答案为 true 。\n\n示例 3:\n\n输入:nums = [1, 1]\n输出:true\n解释:因为数组的最大元素是 1 ,唯一可以构成这个数组的 base[n] 对应的 n = 1,可以看出数组是 base[1] = [1, 1] 的一个排列。所以答案为 true 。\n\n示例 4:\n\n输入:nums = [3, 4, 4, 1, 2, 1]\n输出:false\n解释:因为数组的最大元素是 4 ,唯一可以构成这个数组的 base[n] 对应的 n = 4 。但是 base[n] 有 5 个元素而 nums 有 6 个元素。所以答案为 false 。\n\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= num[i] <= 200\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def isGood(self, nums: List[int]) -> bool:\n \n```", "test":
|
|||
|
{"task_id": "biweekly-contest-109-sort-vowels-in-a-string", "url": "https://leetcode.com/problems/sort-vowels-in-a-string", "title": "sort-vowels-in-a-string", "meta": {"questionId": "2887", "questionFrontendId": "2785", "title": "Sort Vowels in a String", "titleSlug": "sort-vowels-in-a-string", "isPaidOnly": false, "difficulty": "Medium", "likes": 883, "dislikes": 50, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的字符串 s ,将 s 中的元素重新 排列 得到新的字符串 t ,它满足:\n\n * 所有辅音字母都在原来的位置上。更正式的,如果满足 0 <= i < s.length 的下标 i 处的 s[i] 是个辅音字母,那么 t[i] = s[i] 。\n * 元音字母都必须以他们的 ASCII 值按 非递减 顺序排列。更正式的,对于满足 0 <= i < j < s.length 的下标 i 和 j ,如果 s[i] 和 s[j] 都是元音字母,那么 t[i] 的 ASCII 值不能大于 t[j] 的 ASCII 值。\n\n请你返回结果字母串。\n\n元音字母为 'a' ,'e' ,'i' ,'o' 和 'u' ,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。\n\n示例 1:\n\n输入:s = \"lEetcOde\"\n输出:\"lEOtcede\"\n解释:'E' ,'O' 和 'e' 是 s 中的元音字母,'l' ,'t' ,'c' 和 'd' 是所有的辅音。将元音字母按照 ASCII 值排序,辅音字母留在原地。\n\n示例 2:\n\n输入:s = \"lYmpH\"\n输出:\"lYmpH\"\n解释:s 中没有元音字母(s 中都为辅音字母),所以我们返回 \"lYmpH\" 。\n\n\n提示:\n\n * 1 <= s.length <= 105\n * s 只包含英语字母表中的 大写 和 小写 字母。\n\"\"\"\nclass Solution:\n def sortVowels(self, s: str) -> str:\n ", "prompt_sft": "给你一个下标从 0 开始的字符串 s ,将 s 中的元素重新 排列 得到新的字符串 t ,它满足:\n\n * 所有辅音字母都在原来的位置上。更正式的,如果满足 0 <= i < s.length 的下标 i 处的 s[i] 是个辅音字母,那么 t[i] = s[i] 。\n * 元音字母都必须以他们的 ASCII 值按 非递减 顺序排列。更正式的,对于满足 0 <= i < j < s.length 的下标 i 和 j ,如果 s[i] 和 s[j] 都是元音字母,那么 t[i] 的 ASCII 值不能大于 t[j] 的 ASCII 值。\n\n请你返回结果字母串。\n\n元音字母为 'a' ,'e' ,'i' ,'o' 和 'u' ,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。\n\n示例 1:\n\n输入:s = \"lEetcOde\"\n输出:\"lEOtcede\"\n解释:'E' ,'O' 和 'e' 是 s 中的元音字母,'l' ,'t' ,'c' 和 'd' 是所有的辅音。将元音字母按照 ASCII 值排序,辅音字母留在原地。\n\n示例 2:\n\n输入:s = \"lYmpH\"\n输出:\"lYmpH\"\n解释:s 中没有元音字母(s 中都为辅音字母),所以我们返回 \"lYmpH\" 。\n\n\n提示:\n\n * 1 <= s.length <= 105\n * s 只包含英语字母表中的 大写 和 小写 字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sortVowels(self, s: str) -> str:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"lEetcOde\" }\nassert my_solution.sortVowels(**test_input) == \"lEOtcede\"\n\ntest_input = { \"s\": \"lYmpH\" }\nassert my_solution.sortVowels(**test_input) == \"lYmpH\"\n\ntest_input = { \"s\": \"mDVD\" }\nassert my_solution.sortVowels(**test_input) == \"mDVD\"\n\ntest_input = { \"s\": \"xdX\" }\nassert my_solution.sortVowels(**test_input) == \"xdX\"\n\ntest_input = { \"s\": \"xdE\" }\nassert my_solution.sortVowels(**test_input) == \"xdE\"\n\ntest_input = { \"s\": \"RiQYo\" }\nassert my_solution.sortVowels(**test_input) == \"RiQYo\"\n\ntest_input = { \"s\": \"LQRamBOHfq\" }\nassert my_solution.sortVowels(**test_input) == \"LQROmBaHfq\"\n\ntest_input = { \"s\": \"UpjPbEnOj\" }\nassert my_solution.sortVowels(**test_input) == \"EpjPbOnUj\"\n\ntest_input = { \"s\": \"ziF\" }\nassert my_solution.sortVowels(*
|
|||
|
{"task_id": "biweekly-contest-109-visit-array-positions-to-maximize-score", "url": "https://leetcode.com/problems/visit-array-positions-to-maximize-score", "title": "visit-array-positions-to-maximize-score", "meta": {"questionId": "2893", "questionFrontendId": "2786", "title": "Visit Array Positions to Maximize Score", "titleSlug": "visit-array-positions-to-maximize-score", "isPaidOnly": false, "difficulty": "Medium", "likes": 438, "dislikes": 21, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个正整数 x 。\n\n你 一开始 在数组的位置 0 处,你可以按照下述规则访问数组中的其他位置:\n\n * 如果你当前在位置 i ,那么你可以移动到满足 i < j 的 任意 位置 j 。\n * 对于你访问的位置 i ,你可以获得分数 nums[i] 。\n * 如果你从位置 i 移动到位置 j 且 nums[i] 和 nums[j] 的 奇偶性 不同,那么你将失去分数 x 。\n\n请你返回你能得到的 最大 得分之和。\n\n注意 ,你一开始的分数为 nums[0] 。\n\n示例 1:\n\n输入:nums = [2,3,6,1,9,2], x = 5\n输出:13\n解释:我们可以按顺序访问数组中的位置:0 -> 2 -> 3 -> 4 。\n对应位置的值为 2 ,6 ,1 和 9 。因为 6 和 1 的奇偶性不同,所以下标从 2 -> 3 让你失去 x = 5 分。\n总得分为:2 + 6 + 1 + 9 - 5 = 13 。\n\n示例 2:\n\n输入:nums = [2,4,6,8], x = 3\n输出:20\n解释:数组中的所有元素奇偶性都一样,所以我们可以将每个元素都访问一次,而且不会失去任何分数。\n总得分为:2 + 4 + 6 + 8 = 20 。\n\n\n提示:\n\n * 2 <= nums.length <= 105\n * 1 <= nums[i], x <= 106\n\"\"\"\nclass Solution:\n def maxScore(self, nums: List[int], x: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个正整数 x 。\n\n你 一开始 在数组的位置 0 处,你可以按照下述规则访问数组中的其他位置:\n\n * 如果你当前在位置 i ,那么你可以移动到满足 i < j 的 任意 位置 j 。\n * 对于你访问的位置 i ,你可以获得分数 nums[i] 。\n * 如果你从位置 i 移动到位置 j 且 nums[i] 和 nums[j] 的 奇偶性 不同,那么你将失去分数 x 。\n\n请你返回你能得到的 最大 得分之和。\n\n注意 ,你一开始的分数为 nums[0] 。\n\n示例 1:\n\n输入:nums = [2,3,6,1,9,2], x = 5\n输出:13\n解释:我们可以按顺序访问数组中的位置:0 -> 2 -> 3 -> 4 。\n对应位置的值为 2 ,6 ,1 和 9 。因为 6 和 1 的奇偶性不同,所以下标从 2 -> 3 让你失去 x = 5 分。\n总得分为:2 + 6 + 1 + 9 - 5 = 13 。\n\n示例 2:\n\n输入:nums = [2,4,6,8], x = 3\n输出:20\n解释:数组中的所有元素奇偶性都一样,所以我们可以将每个元素都访问一次,而且不会失去任何分数。\n总得分为:2 + 4 + 6 + 8 = 20 。\n\n\n提示:\n\n * 2 <= nums.length <= 105\n * 1 <= nums[i], x <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxScore(self, nums: List[int], x: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,3,6,1,9,2], \"x\": 5 }\nassert my_solution.maxScore(**test_input) == 13\n\ntest_input = { \"nums\": [2,4,6,8], \"x\": 3 }\nassert my_solution.maxScore(**test_input) == 20\n\ntest_input = { \"nums\": [38,92,23,30,25,96,6,71,78,77,33,23,71,48,87,77,53,28,6,20,90,83,42,21,64,95,84,29,22,21,33,36,53,51,85,25,80,56,71,69,5,21,4,84,28,16,65,7], \"x\": 52 }\nassert my_solution.maxScore(**test_input) == 1545\n\ntest_input = { \"nums\": [18,13,60,61,57,21,10,98,51,3,13,36,72,70,68,62,52,83,63,63,53,42,59,98,95,48,22,64,94,80,14,14], \"x\": 2 }\nassert my_solution.maxScore(**test_input) == 1633\n\ntest_input = { \"nums\": [90,87,79,59,91,19,96], \"x\": 51 }\nassert my_solution.maxScore(**test_input) == 419\n\ntest_input = { \"nums\": [96,81,48,3,60,78,74,82,14,7,87,72,42,41,80,4,92,82,59,16,
|
|||
|
{"task_id": "biweekly-contest-109-ways-to-express-an-integer-as-sum-of-powers", "url": "https://leetcode.com/problems/ways-to-express-an-integer-as-sum-of-powers", "title": "ways-to-express-an-integer-as-sum-of-powers", "meta": {"questionId": "2882", "questionFrontendId": "2787", "title": "Ways to Express an Integer as Sum of Powers", "titleSlug": "ways-to-express-an-integer-as-sum-of-powers", "isPaidOnly": false, "difficulty": "Medium", "likes": 346, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个 正 整数 n 和 x 。\n\n请你返回将 n 表示成一些 互不相同 正整数的 x 次幂之和的方案数。换句话说,你需要返回互不相同整数 [n1, n2, ..., nk] 的集合数目,满足 n = n1x + n2x + ... + nkx 。\n\n由于答案可能非常大,请你将它对 109 + 7 取余后返回。\n\n比方说,n = 160 且 x = 3 ,一个表示 n 的方法是 n = 23 + 33 + 53 。\n\n示例 1:\n\n输入:n = 10, x = 2\n输出:1\n解释:我们可以将 n 表示为:n = 32 + 12 = 10 。\n这是唯一将 10 表达成不同整数 2 次方之和的方案。\n\n示例 2:\n\n输入:n = 4, x = 1\n输出:2\n解释:我们可以将 n 按以下方案表示:\n- n = 41 = 4 。\n- n = 31 + 11 = 4 。\n\n\n提示:\n\n * 1 <= n <= 300\n * 1 <= x <= 5\n\"\"\"\nclass Solution:\n def numberOfWays(self, n: int, x: int) -> int:\n ", "prompt_sft": "给你两个 正 整数 n 和 x 。\n\n请你返回将 n 表示成一些 互不相同 正整数的 x 次幂之和的方案数。换句话说,你需要返回互不相同整数 [n1, n2, ..., nk] 的集合数目,满足 n = n1x + n2x + ... + nkx 。\n\n由于答案可能非常大,请你将它对 109 + 7 取余后返回。\n\n比方说,n = 160 且 x = 3 ,一个表示 n 的方法是 n = 23 + 33 + 53 。\n\n示例 1:\n\n输入:n = 10, x = 2\n输出:1\n解释:我们可以将 n 表示为:n = 32 + 12 = 10 。\n这是唯一将 10 表达成不同整数 2 次方之和的方案。\n\n示例 2:\n\n输入:n = 4, x = 1\n输出:2\n解释:我们可以将 n 按以下方案表示:\n- n = 41 = 4 。\n- n = 31 + 11 = 4 。\n\n\n提示:\n\n * 1 <= n <= 300\n * 1 <= x <= 5\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def numberOfWays(self, n: int, x: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 10, \"x\": 2 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 4, \"x\": 1 }\nassert my_solution.numberOfWays(**test_input) == 2\n\ntest_input = { \"n\": 1, \"x\": 1 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 1, \"x\": 2 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 1, \"x\": 3 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 1, \"x\": 4 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 1, \"x\": 5 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 2, \"x\": 1 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = { \"n\": 2, \"x\": 2 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 2, \"x\": 3 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 2, \"x\": 4 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 2, \"x\": 5 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 3, \"x\": 1 }\nassert my_solution.numberOfWays(**test_input) == 2\n\ntest_input = { \"n\": 3, \"x\": 2 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 3, \"x\": 3 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 3, \"x\": 4 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 3, \"x\": 5 }\nassert my_solution.numberOfWays(**test_input) == 0\n\ntest_input = { \"n\": 4, \"x\": 2 }\nassert my_solution.numberOfWays(**test_input) == 1\n\ntest_input = {
|
|||
|
{"task_id": "weekly-contest-354-sum-of-squares-of-special-elements", "url": "https://leetcode.com/problems/sum-of-squares-of-special-elements", "title": "sum-of-squares-of-special-elements", "meta": {"questionId": "2844", "questionFrontendId": "2778", "title": "Sum of Squares of Special Elements ", "titleSlug": "sum-of-squares-of-special-elements", "isPaidOnly": false, "difficulty": "Easy", "likes": 218, "dislikes": 65, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 1 开始、长度为 n 的整数数组 nums 。\n\n对 nums 中的元素 nums[i] 而言,如果 n 能够被 i 整除,即 n % i == 0 ,则认为 num[i] 是一个 特殊元素 。\n\n返回 nums 中所有 特殊元素 的 平方和 。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:21\n解释:nums 中共有 3 个特殊元素:nums[1],因为 4 被 1 整除;nums[2],因为 4 被 2 整除;以及 nums[4],因为 4 被 4 整除。\n因此,nums 中所有特殊元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[4] * nums[4] = 1 * 1 + 2 * 2 + 4 * 4 = 21 。\n\n示例 2:\n\n输入:nums = [2,7,1,19,18,3]\n输出:63\n解释:nums 中共有 4 个特殊元素:nums[1],因为 6 被 1 整除;nums[2] ,因为 6 被 2 整除;nums[3],因为 6 被 3 整除;以及 nums[6],因为 6 被 6 整除。\n因此,nums 中所有特殊元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[3] * nums[3] + nums[6] * nums[6] = 2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63 。\n\n提示:\n\n * 1 <= nums.length == n <= 50\n * 1 <= nums[i] <= 50\n\"\"\"\nclass Solution:\n def sumOfSquares(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 1 开始、长度为 n 的整数数组 nums 。\n\n对 nums 中的元素 nums[i] 而言,如果 n 能够被 i 整除,即 n % i == 0 ,则认为 num[i] 是一个 特殊元素 。\n\n返回 nums 中所有 特殊元素 的 平方和 。\n\n示例 1:\n\n输入:nums = [1,2,3,4]\n输出:21\n解释:nums 中共有 3 个特殊元素:nums[1],因为 4 被 1 整除;nums[2],因为 4 被 2 整除;以及 nums[4],因为 4 被 4 整除。\n因此,nums 中所有特殊元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[4] * nums[4] = 1 * 1 + 2 * 2 + 4 * 4 = 21 。\n\n示例 2:\n\n输入:nums = [2,7,1,19,18,3]\n输出:63\n解释:nums 中共有 4 个特殊元素:nums[1],因为 6 被 1 整除;nums[2] ,因为 6 被 2 整除;nums[3],因为 6 被 3 整除;以及 nums[6],因为 6 被 6 整除。\n因此,nums 中所有特殊元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[3] * nums[3] + nums[6] * nums[6] = 2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63 。\n\n提示:\n\n * 1 <= nums.length == n <= 50\n * 1 <= nums[i] <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sumOfSquares(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,2,3,4] }\nassert my_solution.sumOfSquares(**test_input) == 21\n\ntest_input = { \"nums\": [2,7,1,19,18,3] }\nassert my_solution.sumOfSquares(**test_input) == 63\n\ntest_input = { \"nums\": [1] }\nassert my_solution.sumOfSquares(**test_input) == 1\n\ntest_input = { \"nums\": [2] }\nassert my_solution.sumOfSquares(**test_input) == 4\n\ntest_input = { \"nums\": [3] }\nassert my_solution.sumOfSquares(**test_input) == 9\n\ntest_input = { \"nums\": [4] }\nassert my_solution.sumOfSquares(**test_input) == 16\n\ntest_input = { \"nums\": [5] }\nassert my_solution.sumOfSquares(**test_input) == 25\n\ntest_input = { \"nums\": [6] }\nassert my_solution.sumOfSquares(**test_input) == 36\n\ntest_input = { \"nums\": [7] }\nassert my_solution.sumOfSquares(**test_input) == 49\n\ntest_input = { \"nums\": [8] }\nassert my_solution.sumOfSquares(**test_input) == 64\n\ntest_input = { \"nums\": [9] }\nassert my_solution.sumOfSquares(**test_input) == 81\n\ntest_input = { \"nums\": [10] }\nassert my_solution.sumOfSquares(**test_input) == 100\n\ntest_input = { \"nums\": [11] }\nas
|
|||
|
{"task_id": "weekly-contest-354-maximum-beauty-of-an-array-after-applying-operation", "url": "https://leetcode.com/problems/maximum-beauty-of-an-array-after-applying-operation", "title": "maximum-beauty-of-an-array-after-applying-operation", "meta": {"questionId": "2891", "questionFrontendId": "2779", "title": "Maximum Beauty of an Array After Applying Operation", "titleSlug": "maximum-beauty-of-an-array-after-applying-operation", "isPaidOnly": false, "difficulty": "Medium", "likes": 559, "dislikes": 12, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。\n\n在一步操作中,你可以执行下述指令:\n\n * 在范围 [0, nums.length - 1] 中选择一个 此前没有选过 的下标 i 。\n * 将 nums[i] 替换为范围 [nums[i] - k, nums[i] + k] 内的任一整数。\n\n数组的 美丽值 定义为数组中由相等元素组成的最长子序列的长度。\n\n对数组 nums 执行上述操作任意次后,返回数组可能取得的 最大 美丽值。\n\n注意:你 只 能对每个下标执行 一次 此操作。\n\n数组的 子序列 定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。\n\n示例 1:\n\n输入:nums = [4,6,1,2], k = 2\n输出:3\n解释:在这个示例中,我们执行下述操作:\n- 选择下标 1 ,将其替换为 4(从范围 [4,8] 中选出),此时 nums = [4,4,1,2] 。\n- 选择下标 3 ,将其替换为 4(从范围 [0,4] 中选出),此时 nums = [4,4,1,4] 。\n执行上述操作后,数组的美丽值是 3(子序列由下标 0 、1 、3 对应的元素组成)。\n可以证明 3 是我们可以得到的由相等元素组成的最长子序列长度。\n\n示例 2:\n\n输入:nums = [1,1,1,1], k = 10\n输出:4\n解释:在这个示例中,我们无需执行任何操作。\n数组 nums 的美丽值是 4(整个数组)。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i], k <= 105\n\"\"\"\nclass Solution:\n def maximumBeauty(self, nums: List[int], k: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。\n\n在一步操作中,你可以执行下述指令:\n\n * 在范围 [0, nums.length - 1] 中选择一个 此前没有选过 的下标 i 。\n * 将 nums[i] 替换为范围 [nums[i] - k, nums[i] + k] 内的任一整数。\n\n数组的 美丽值 定义为数组中由相等元素组成的最长子序列的长度。\n\n对数组 nums 执行上述操作任意次后,返回数组可能取得的 最大 美丽值。\n\n注意:你 只 能对每个下标执行 一次 此操作。\n\n数组的 子序列 定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。\n\n示例 1:\n\n输入:nums = [4,6,1,2], k = 2\n输出:3\n解释:在这个示例中,我们执行下述操作:\n- 选择下标 1 ,将其替换为 4(从范围 [4,8] 中选出),此时 nums = [4,4,1,2] 。\n- 选择下标 3 ,将其替换为 4(从范围 [0,4] 中选出),此时 nums = [4,4,1,4] 。\n执行上述操作后,数组的美丽值是 3(子序列由下标 0 、1 、3 对应的元素组成)。\n可以证明 3 是我们可以得到的由相等元素组成的最长子序列长度。\n\n示例 2:\n\n输入:nums = [1,1,1,1], k = 10\n输出:4\n解释:在这个示例中,我们无需执行任何操作。\n数组 nums 的美丽值是 4(整个数组)。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 0 <= nums[i], k <= 105\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumBeauty(self, nums: List[int], k: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [4,6,1,2], \"k\": 2 }\nassert my_solution.maximumBeauty(**test_input) == 3\n\ntest_input = { \"nums\": [1,1,1,1], \"k\": 10 }\nassert my_solution.maximumBeauty(**test_in
|
|||
|
{"task_id": "weekly-contest-354-minimum-index-of-a-valid-split", "url": "https://leetcode.com/problems/minimum-index-of-a-valid-split", "title": "minimum-index-of-a-valid-split", "meta": {"questionId": "2888", "questionFrontendId": "2780", "title": "Minimum Index of a Valid Split", "titleSlug": "minimum-index-of-a-valid-split", "isPaidOnly": false, "difficulty": "Medium", "likes": 282, "dislikes": 11, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n如果元素 x 在长度为 m 的整数数组 arr 中满足 freq(x) * 2 > m ,那么我们称 x 是 支配元素 。其中 freq(x) 是 x 在数组 arr 中出现的次数。注意,根据这个定义,数组 arr 最多 只会有 一个 支配元素。\n\n给你一个下标从 0 开始长度为 n 的整数数组 nums ,数据保证它含有一个支配元素。\n\n你需要在下标 i 处将 nums 分割成两个数组 nums[0, ..., i] 和 nums[i + 1, ..., n - 1] ,如果一个分割满足以下条件,我们称它是 合法 的:\n\n * 0 <= i < n - 1\n * nums[0, ..., i] 和 nums[i + 1, ..., n - 1] 的支配元素相同。\n\n这里, nums[i, ..., j] 表示 nums 的一个子数组,它开始于下标 i ,结束于下标 j ,两个端点都包含在子数组内。特别地,如果 j < i ,那么 nums[i, ..., j] 表示一个空数组。\n\n请你返回一个 合法分割 的 最小 下标。如果合法分割不存在,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,2,2,2]\n输出:2\n解释:我们将数组在下标 2 处分割,得到 [1,2,2] 和 [2] 。\n数组 [1,2,2] 中,元素 2 是支配元素,因为它在数组中出现了 2 次,且 2 * 2 > 3 。\n数组 [2] 中,元素 2 是支配元素,因为它在数组中出现了 1 次,且 1 * 2 > 1 。\n两个数组 [1,2,2] 和 [2] 都有与 nums 一样的支配元素,所以这是一个合法分割。\n下标 2 是合法分割中的最小下标。\n\n示例 2:\n\n输入:nums = [2,1,3,1,1,1,7,1,2,1]\n输出:4\n解释:我们将数组在下标 4 处分割,得到 [2,1,3,1,1] 和 [1,7,1,2,1] 。\n数组 [2,1,3,1,1] 中,元素 1 是支配元素,因为它在数组中出现了 3 次,且 3 * 2 > 5 。\n数组 [1,7,1,2,1] 中,元素 1 是支配元素,因为它在数组中出现了 3 次,且 3 * 2 > 5 。\n两个数组 [2,1,3,1,1] 和 [1,7,1,2,1] 都有与 nums 一样的支配元素,所以这是一个合法分割。\n下标 4 是所有合法分割中的最小下标。\n\n示例 3:\n\n输入:nums = [3,3,3,3,7,2,2]\n输出:-1\n解释:没有合法分割。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n * nums 有且只有一个支配元素。\n\"\"\"\nclass Solution:\n def minimumIndex(self, nums: List[int]) -> int:\n ", "prompt_sft": "如果元素 x 在长度为 m 的整数数组 arr 中满足 freq(x) * 2 > m ,那么我们称 x 是 支配元素 。其中 freq(x) 是 x 在数组 arr 中出现的次数。注意,根据这个定义,数组 arr 最多 只会有 一个 支配元素。\n\n给你一个下标从 0 开始长度为 n 的整数数组 nums ,数据保证它含有一个支配元素。\n\n你需要在下标 i 处将 nums 分割成两个数组 nums[0, ..., i] 和 nums[i + 1, ..., n - 1] ,如果一个分割满足以下条件,我们称它是 合法 的:\n\n * 0 <= i < n - 1\n * nums[0, ..., i] 和 nums[i + 1, ..., n - 1] 的支配元素相同。\n\n这里, nums[i, ..., j] 表示 nums 的一个子数组,它开始于下标 i ,结束于下标 j ,两个端点都包含在子数组内。特别地,如果 j < i ,那么 nums[i, ..., j] 表示一个空数组。\n\n请你返回一个 合法分割 的 最小 下标。如果合法分割不存在,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,2,2,2]\n输出:2\n解释:我们将数组在下标 2 处分割,得到 [1,2,2] 和 [2] 。\n数组 [1,2,2] 中,元素 2 是支配元素,因为它在数组中出现了 2 次,且 2 * 2 > 3 。\n数组 [2] 中,元素 2 是支配元素,因为它在数
|
|||
|
{"task_id": "weekly-contest-354-length-of-the-longest-valid-substring", "url": "https://leetcode.com/problems/length-of-the-longest-valid-substring", "title": "length-of-the-longest-valid-substring", "meta": {"questionId": "2884", "questionFrontendId": "2781", "title": "Length of the Longest Valid Substring", "titleSlug": "length-of-the-longest-valid-substring", "isPaidOnly": false, "difficulty": "Hard", "likes": 447, "dislikes": 9, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个字符串 word 和一个字符串数组 forbidden 。\n\n如果一个字符串不包含 forbidden 中的任何字符串,我们称这个字符串是 合法 的。\n\n请你返回字符串 word 的一个 最长合法子字符串 的长度。\n\n子字符串 指的是一个字符串中一段连续的字符,它可以为空。\n\n示例 1:\n\n输入:word = \"cbaaaabc\", forbidden = [\"aaa\",\"cb\"]\n输出:4\n解释:总共有 11 个合法子字符串:\"c\", \"b\", \"a\", \"ba\", \"aa\", \"bc\", \"baa\", \"aab\", \"ab\", \"abc\" 和 \"aabc\"。最长合法子字符串的长度为 4 。\n其他子字符串都要么包含 \"aaa\" ,要么包含 \"cb\" 。\n\n示例 2:\n\n输入:word = \"leetcode\", forbidden = [\"de\",\"le\",\"e\"]\n输出:4\n解释:总共有 11 个合法子字符串:\"l\" ,\"t\" ,\"c\" ,\"o\" ,\"d\" ,\"tc\" ,\"co\" ,\"od\" ,\"tco\" ,\"cod\" 和 \"tcod\" 。最长合法子字符串的长度为 4 。\n所有其他子字符串都至少包含 \"de\" ,\"le\" 和 \"e\" 之一。\n\n\n提示:\n\n * 1 <= word.length <= 105\n * word 只包含小写英文字母。\n * 1 <= forbidden.length <= 105\n * 1 <= forbidden[i].length <= 10\n * forbidden[i] 只包含小写英文字母。\n\"\"\"\nclass Solution:\n def longestValidSubstring(self, word: str, forbidden: List[str]) -> int:\n ", "prompt_sft": "给你一个字符串 word 和一个字符串数组 forbidden 。\n\n如果一个字符串不包含 forbidden 中的任何字符串,我们称这个字符串是 合法 的。\n\n请你返回字符串 word 的一个 最长合法子字符串 的长度。\n\n子字符串 指的是一个字符串中一段连续的字符,它可以为空。\n\n示例 1:\n\n输入:word = \"cbaaaabc\", forbidden = [\"aaa\",\"cb\"]\n输出:4\n解释:总共有 11 个合法子字符串:\"c\", \"b\", \"a\", \"ba\", \"aa\", \"bc\", \"baa\", \"aab\", \"ab\", \"abc\" 和 \"aabc\"。最长合法子字符串的长度为 4 。\n其他子字符串都要么包含 \"aaa\" ,要么包含 \"cb\" 。\n\n示例 2:\n\n输入:word = \"leetcode\", forbidden = [\"de\",\"le\",\"e\"]\n输出:4\n解释:总共有 11 个合法子字符串:\"l\" ,\"t\" ,\"c\" ,\"o\" ,\"d\" ,\"tc\" ,\"co\" ,\"od\" ,\"tco\" ,\"cod\" 和 \"tcod\" 。最长合法子字符串的长度为 4 。\n所有其他子字符串都至少包含 \"de\" ,\"le\" 和 \"e\" 之一。\n\n\n提示:\n\n * 1 <= word.length <= 105\n * word 只包含小写英文字母。\n * 1 <= forbidden.length <= 105\n * 1 <= forbidden[i].length <= 10\n * forbidden[i] 只包含小写英文字母。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def longestValidSubstring(self, word: str, forbidden: List[str]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"word\": \"cbaaaabc\", \"forbidden\": [\"aaa\",\"cb\"] }\nassert my_solution.longestValidSubstring(**test_input) == 4\n\ntest_input = { \"word\": \"leetcode\", \"forbidden\": [\"de\",\"le\",\"e\"] }\nassert my_solution.longestValidSubstring(**test_input) == 4\n\ntest_input = { \"word\": \"a\", \"forbidden\": [\"n\"] }\nassert my_solution.longestValidSubstring(**test_input) == 1\n\ntest_input = { \"word\": \"a\", \"forbidden\": [\"s\"] }\nassert my_solution.longestValidSubstring(**test_input) == 1\n\ntest_input = { \"word\": \"a\", \"forbidden\": [\"a\"] }\nassert my_solution.longestValidSubstring(**test_input) == 0\n\ntest_input = { \"word\": \"b\", \"forbidden\": [\"g\"] }\nassert my_solution.longestV
|
|||
|
{"task_id": "weekly-contest-353-find-the-maximum-achievable-number", "url": "https://leetcode.com/problems/find-the-maximum-achievable-number", "title": "find-the-maximum-achievable-number", "meta": {"questionId": "2812", "questionFrontendId": "2769", "title": "Find the Maximum Achievable Number", "titleSlug": "find-the-maximum-achievable-number", "isPaidOnly": false, "difficulty": "Easy", "likes": 230, "dislikes": 286, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个整数 num 和 t 。\n\n如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 :\n\n * 每次操作将 x 的值增加或减少 1 ,同时可以选择将 num 的值增加或减少 1 。\n\n返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。\n\n示例 1:\n\n输入:num = 4, t = 1\n输出:6\n解释:最大可达成数字是 x = 6 ,执行下述操作可以使其等于 num :\n- x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。\n可以证明不存在大于 6 的可达成数字。\n\n示例 2:\n\n输入:num = 3, t = 2\n输出:7\n解释:最大的可达成数字是 x = 7 ,执行下述操作可以使其等于 num :\n- x 减少 1 ,同时 num 增加 1 。此时,x = 6 且 num = 4 。\n- x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。\n可以证明不存在大于 7 的可达成数字。\n\n\n提示:\n\n * 1 <= num, t <= 50\n\"\"\"\nclass Solution:\n def theMaximumAchievableX(self, num: int, t: int) -> int:\n ", "prompt_sft": "给你两个整数 num 和 t 。\n\n如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 :\n\n * 每次操作将 x 的值增加或减少 1 ,同时可以选择将 num 的值增加或减少 1 。\n\n返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。\n\n示例 1:\n\n输入:num = 4, t = 1\n输出:6\n解释:最大可达成数字是 x = 6 ,执行下述操作可以使其等于 num :\n- x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。\n可以证明不存在大于 6 的可达成数字。\n\n示例 2:\n\n输入:num = 3, t = 2\n输出:7\n解释:最大的可达成数字是 x = 7 ,执行下述操作可以使其等于 num :\n- x 减少 1 ,同时 num 增加 1 。此时,x = 6 且 num = 4 。\n- x 减少 1 ,同时 num 增加 1 。此时,x = 5 且 num = 5 。\n可以证明不存在大于 7 的可达成数字。\n\n\n提示:\n\n * 1 <= num, t <= 50\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def theMaximumAchievableX(self, num: int, t: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"num\": 4, \"t\": 1 }\nassert my_solution.theMaximumAchievableX(**test_input) == 6\n\ntest_input = { \"num\": 3, \"t\": 2 }\nassert my_solution.theMaximumAchievableX(**test_input) == 7\n\ntest_input = { \"num\": 1, \"t\": 1 }\nassert my_solution.theMaximumAchievableX(**test_input) == 3\n\ntest_input = { \"num\": 1, \"t\": 2 }\nassert my_solution.theMaximumAchievableX(**test_input) == 5\n\ntest_input = { \"num\": 1, \"t\": 3 }\nassert my_solution.theMaximumAchievableX(**test_input) == 7\n\ntest_input = { \"num\": 1, \"t\": 4 }\nassert my_solution.theMaximumAchievableX(**test_input) == 9\n\ntest_input = { \"num\": 1, \"t\": 5 }\nassert my_solution.theMaximumAchievableX(**test_input) == 11\n\ntest_input = { \"num\": 1, \"t\": 6 }\nassert my_solution.theMaximumAchievableX(**test_input) == 13\n\ntest_input = { \"num\": 1, \"t\": 7 }\nassert my_solution.theMaximumAchievableX(**test_input) == 15\n\ntest_input = { \"num\": 1, \"t\": 8 }\nassert my_solution.theMaximumAchievableX(**test_input) == 17\n\ntest_input = { \"num\": 1, \"t\": 9 }\nassert my_solution.theMaximumAchievableX(**test_input) == 19\n\ntest_input = { \"num\": 1, \"t\": 10 }\nassert my_solution.theMaximumAchievableX(**test_input) == 21\n\ntest_input = { \"num\": 1, \"t\": 11 }\nassert my_sol
|
|||
|
{"task_id": "weekly-contest-353-maximum-number-of-jumps-to-reach-the-last-index", "url": "https://leetcode.com/problems/maximum-number-of-jumps-to-reach-the-last-index", "title": "maximum-number-of-jumps-to-reach-the-last-index", "meta": {"questionId": "2855", "questionFrontendId": "2770", "title": "Maximum Number of Jumps to Reach the Last Index", "titleSlug": "maximum-number-of-jumps-to-reach-the-last-index", "isPaidOnly": false, "difficulty": "Medium", "likes": 356, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始、由 n 个整数组成的数组 nums 和一个整数 target 。\n\n你的初始位置在下标 0 。在一步操作中,你可以从下标 i 跳跃到任意满足下述条件的下标 j :\n\n * 0 <= i < j < n\n * -target <= nums[j] - nums[i] <= target\n\n返回到达下标 n - 1 处所需的 最大跳跃次数 。\n\n如果无法到达下标 n - 1 ,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,3,6,4,1,2], target = 2\n输出:3\n解释:要想以最大跳跃次数从下标 0 到下标 n - 1 ,可以按下述跳跃序列执行操作:\n- 从下标 0 跳跃到下标 1 。\n- 从下标 1 跳跃到下标 3 。\n- 从下标 3 跳跃到下标 5 。\n可以证明,从 0 到 n - 1 的所有方案中,不存在比 3 步更长的跳跃序列。因此,答案是 3 。\n\n示例 2:\n\n输入:nums = [1,3,6,4,1,2], target = 3\n输出:5\n解释:要想以最大跳跃次数从下标 0 到下标 n - 1 ,可以按下述跳跃序列执行操作:\n- 从下标 0 跳跃到下标 1 。\n- 从下标 1 跳跃到下标 2 。\n- 从下标 2 跳跃到下标 3 。\n- 从下标 3 跳跃到下标 4 。\n- 从下标 4 跳跃到下标 5 。\n可以证明,从 0 到 n - 1 的所有方案中,不存在比 5 步更长的跳跃序列。因此,答案是 5 。\n\n示例 3:\n\n输入:nums = [1,3,6,4,1,2], target = 0\n输出:-1\n解释:可以证明不存在从 0 到 n - 1 的跳跃序列。因此,答案是 -1 。\n\n\n提示:\n\n * 2 <= nums.length == n <= 1000\n * -109 <= nums[i] <= 109\n * 0 <= target <= 2 * 109\n\"\"\"\nclass Solution:\n def maximumJumps(self, nums: List[int], target: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始、由 n 个整数组成的数组 nums 和一个整数 target 。\n\n你的初始位置在下标 0 。在一步操作中,你可以从下标 i 跳跃到任意满足下述条件的下标 j :\n\n * 0 <= i < j < n\n * -target <= nums[j] - nums[i] <= target\n\n返回到达下标 n - 1 处所需的 最大跳跃次数 。\n\n如果无法到达下标 n - 1 ,返回 -1 。\n\n示例 1:\n\n输入:nums = [1,3,6,4,1,2], target = 2\n输出:3\n解释:要想以最大跳跃次数从下标 0 到下标 n - 1 ,可以按下述跳跃序列执行操作:\n- 从下标 0 跳跃到下标 1 。\n- 从下标 1 跳跃到下标 3 。\n- 从下标 3 跳跃到下标 5 。\n可以证明,从 0 到 n - 1 的所有方案中,不存在比 3 步更长的跳跃序列。因此,答案是 3 。\n\n示例 2:\n\n输入:nums = [1,3,6,4,1,2], target = 3\n输出:5\n解释:要想以最大跳跃次数从下标 0 到下标 n - 1 ,可以按下述跳跃序列执行操作:\n- 从下标 0 跳跃到下标 1 。\n- 从下标 1 跳跃到下标 2 。\n- 从下标 2 跳跃到下标 3 。\n- 从下标 3 跳跃到下标 4 。\n- 从下标 4 跳跃到下标 5 。\n可以证明,从 0 到 n - 1 的所有方案中,不存在比 5 步更长的跳跃序列。因此,答案是 5 。\n\n示例 3:\n\n输入:nums = [1,3,6,4,1,2], target = 0\n输出:-1\n解释:可以证明不存在从 0 到 n - 1 的跳跃序列。因此,答案是 -1 。\n\n\n提示:\n\n * 2 <= nums.length == n <= 1000\n * -109 <= nums[i] <= 109\n * 0 <= target <= 2 * 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maximumJumps(self, nums: List[int], target: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,6,4,1,2], \"target\": 2 }\nassert my_solution.maximumJ
|
|||
|
{"task_id": "weekly-contest-353-longest-non-decreasing-subarray-from-two-arrays", "url": "https://leetcode.com/problems/longest-non-decreasing-subarray-from-two-arrays", "title": "longest-non-decreasing-subarray-from-two-arrays", "meta": {"questionId": "2869", "questionFrontendId": "2771", "title": "Longest Non-decreasing Subarray From Two Arrays", "titleSlug": "longest-non-decreasing-subarray-from-two-arrays", "isPaidOnly": false, "difficulty": "Medium", "likes": 505, "dislikes": 10, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,长度均为 n 。\n\n让我们定义另一个下标从 0 开始、长度为 n 的整数数组,nums3 。对于范围 [0, n - 1] 的每个下标 i ,你可以将 nums1[i] 或 nums2[i] 的值赋给 nums3[i] 。\n\n你的任务是使用最优策略为 nums3 赋值,以最大化 nums3 中 最长非递减子数组 的长度。\n\n以整数形式表示并返回 nums3 中 最长非递减 子数组的长度。\n\n注意:子数组 是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums1 = [2,3,1], nums2 = [1,2,1]\n输出:2\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums2[1], nums2[2]] => [2,2,1]\n从下标 0 开始到下标 1 结束,形成了一个长度为 2 的非递减子数组 [2,2] 。\n可以证明 2 是可达到的最大长度。\n\n示例 2:\n\n输入:nums1 = [1,3,2,1], nums2 = [2,2,3,4]\n输出:4\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums2[1], nums2[2], nums2[3]] => [1,2,3,4]\n整个数组形成了一个长度为 4 的非递减子数组,并且是可达到的最大长度。\n\n示例 3:\n\n输入:nums1 = [1,1], nums2 = [2,2]\n输出:2\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums1[1]] => [1,1]\n整个数组形成了一个长度为 2 的非递减子数组,并且是可达到的最大长度。\n\n\n提示:\n\n * 1 <= nums1.length == nums2.length == n <= 105\n * 1 <= nums1[i], nums2[i] <= 109\n\"\"\"\nclass Solution:\n def maxNonDecreasingLength(self, nums1: List[int], nums2: List[int]) -> int:\n ", "prompt_sft": "给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,长度均为 n 。\n\n让我们定义另一个下标从 0 开始、长度为 n 的整数数组,nums3 。对于范围 [0, n - 1] 的每个下标 i ,你可以将 nums1[i] 或 nums2[i] 的值赋给 nums3[i] 。\n\n你的任务是使用最优策略为 nums3 赋值,以最大化 nums3 中 最长非递减子数组 的长度。\n\n以整数形式表示并返回 nums3 中 最长非递减 子数组的长度。\n\n注意:子数组 是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums1 = [2,3,1], nums2 = [1,2,1]\n输出:2\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums2[1], nums2[2]] => [2,2,1]\n从下标 0 开始到下标 1 结束,形成了一个长度为 2 的非递减子数组 [2,2] 。\n可以证明 2 是可达到的最大长度。\n\n示例 2:\n\n输入:nums1 = [1,3,2,1], nums2 = [2,2,3,4]\n输出:4\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums2[1], nums2[2], nums2[3]] => [1,2,3,4]\n整个数组形成了一个长度为 4 的非递减子数组,并且是可达到的最大长度。\n\n示例 3:\n\n输入:nums1 = [1,1], nums2 = [2,2]\n输出:2\n解释:构造 nums3 的方法之一是:\nnums3 = [nums1[0], nums1[1]] => [1,1]\n整个数组形成了一个长度为 2 的非递减子数组,并且是可达到的最大长度。\n\n\n提示:\n\n * 1 <= nums1.length == nums2.length == n <= 105\n * 1 <= nums1[i], nums2[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def maxNonDecreasingLength(self, nums1: List[int], nums2: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums1\": [2,3,1], \"nums2\": [1,2,1] }\nassert my_solution.maxNonDecreasingLength(**test_input) == 2\n\ntest_input = { \"nums1\": [1,3,2,1], \"nums2\": [2,2,3,4] }\nassert my_solution
|
|||
|
{"task_id": "weekly-contest-353-apply-operations-to-make-all-array-elements-equal-to-zero", "url": "https://leetcode.com/problems/apply-operations-to-make-all-array-elements-equal-to-zero", "title": "apply-operations-to-make-all-array-elements-equal-to-zero", "meta": {"questionId": "2878", "questionFrontendId": "2772", "title": "Apply Operations to Make All Array Elements Equal to Zero", "titleSlug": "apply-operations-to-make-all-array-elements-equal-to-zero", "isPaidOnly": false, "difficulty": "Medium", "likes": 339, "dislikes": 19, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个正整数 k 。\n\n你可以对数组执行下述操作 任意次 :\n\n * 从数组中选出长度为 k 的 任一 子数组,并将子数组中每个元素都 减去 1 。\n\n如果你可以使数组中的所有元素都等于 0 ,返回 true ;否则,返回 false 。\n\n子数组 是数组中的一个非空连续元素序列。\n\n示例 1:\n\n输入:nums = [2,2,3,1,1,0], k = 3\n输出:true\n解释:可以执行下述操作:\n- 选出子数组 [2,2,3] ,执行操作后,数组变为 nums = [1,1,2,1,1,0] 。\n- 选出子数组 [2,1,1] ,执行操作后,数组变为 nums = [1,1,1,0,0,0] 。\n- 选出子数组 [1,1,1] ,执行操作后,数组变为 nums = [0,0,0,0,0,0] 。\n\n示例 2:\n\n输入:nums = [1,3,1,1], k = 2\n输出:false\n解释:无法使数组中的所有元素等于 0 。\n\n\n提示:\n\n * 1 <= k <= nums.length <= 105\n * 0 <= nums[i] <= 106\n\"\"\"\nclass Solution:\n def checkArray(self, nums: List[int], k: int) -> bool:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个正整数 k 。\n\n你可以对数组执行下述操作 任意次 :\n\n * 从数组中选出长度为 k 的 任一 子数组,并将子数组中每个元素都 减去 1 。\n\n如果你可以使数组中的所有元素都等于 0 ,返回 true ;否则,返回 false 。\n\n子数组 是数组中的一个非空连续元素序列。\n\n示例 1:\n\n输入:nums = [2,2,3,1,1,0], k = 3\n输出:true\n解释:可以执行下述操作:\n- 选出子数组 [2,2,3] ,执行操作后,数组变为 nums = [1,1,2,1,1,0] 。\n- 选出子数组 [2,1,1] ,执行操作后,数组变为 nums = [1,1,1,0,0,0] 。\n- 选出子数组 [1,1,1] ,执行操作后,数组变为 nums = [0,0,0,0,0,0] 。\n\n示例 2:\n\n输入:nums = [1,3,1,1], k = 2\n输出:false\n解释:无法使数组中的所有元素等于 0 。\n\n\n提示:\n\n * 1 <= k <= nums.length <= 105\n * 0 <= nums[i] <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def checkArray(self, nums: List[int], k: int) -> bool:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [1,3,1,1], \"k\": 2 }\nassert my_solution.checkArray(**test_input) == False\n\ntest_input = { \"nums\": [2,2,3,1,1,0], \"k\": 3 }\nassert my_solution.checkArray(**test_input) == True\n\ntest_input = { \"nums\": [24,24,14,37,31,88,94,38,94,0,100,100,4,46,5,50,0,33,22,25,0], \"k\": 10 }\nassert my_solution.checkArray(**test_input) == False\n\ntest_input = { \"nums\": [60,72,87,89,63,52,64,62,31,37,57,83,98,94,92,77,94,91,87,100,91,91,50,26], \"k\": 4 }\nassert my_solution.checkArray(**test_input) == True\n\ntest_input = { \"nums\": [22,4,1,25,68,30,97,99,100,22,20,39,85,68,3,1,1,74], \"k\": 4 }\nassert my_solution.checkArray(**test_input) == False\n\ntest_input = { \"nums\": [63,40,30,0,72,53], \"k\": 1 }\nassert my_solution.checkArray(**test_input) == True\n\ntest_input = { \"nums\": [27,99,7,1,94,63,84,46,76,35,97,77,19,72,3], \"k\": 2 }\nassert my_solution.checkArray(**test_input) == False\n\ntest_input = { \"nums\": [60,78,96,97,97,97,49,7,97,97,97,99,97,97,97,97,85,97,97,97,37,5,1], \"k\": 20 }\nassert my_solution.checkArray(**test_input) == False\n\ntest_input = { \"nums\": [34,34,99,93,93,26,99,100,94,94,82,86,100,100,87,100,100,100,100,100,63,100,100,66,17,10,8,7,3,1], \"k\": 23 }\nassert my_solution.checkArray(**test
|
|||
|
{"task_id": "biweekly-contest-108-longest-alternating-subarray", "url": "https://leetcode.com/problems/longest-alternating-subarray", "title": "longest-alternating-subarray", "meta": {"questionId": "2870", "questionFrontendId": "2765", "title": "Longest Alternating Subarray", "titleSlug": "longest-alternating-subarray", "isPaidOnly": false, "difficulty": "Easy", "likes": 181, "dislikes": 153, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件,我们称它是一个 交替子序列 :\n\n * m 大于 1 。\n * s1 = s0 + 1 。\n * 下标从 0 开始的子数组 s 与数组 [s0, s1, s0, s1,...,s(m-1) % 2] 一样。也就是说,s1 - s0 = 1 ,s2 - s1 = -1 ,s3 - s2 = 1 ,s4 - s3 = -1 ,以此类推,直到 s[m - 1] - s[m - 2] = (-1)m 。\n\n请你返回 nums 中所有 交替 子数组中,最长的长度,如果不存在交替子数组,请你返回 -1 。\n\n子数组是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,3,4,3,4]\n输出:4\n解释:交替子数组有 [3,4] ,[3,4,3] 和 [3,4,3,4] 。最长的子数组为 [3,4,3,4] ,长度为4 。\n\n示例 2:\n\n输入:nums = [4,5,6]\n输出:2\n解释:[4,5] 和 [5,6] 是仅有的两个交替子数组。它们长度都为 2 。\n\n\n提示:\n\n * 2 <= nums.length <= 100\n * 1 <= nums[i] <= 104\n\"\"\"\nclass Solution:\n def alternatingSubarray(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件,我们称它是一个 交替子序列 :\n\n * m 大于 1 。\n * s1 = s0 + 1 。\n * 下标从 0 开始的子数组 s 与数组 [s0, s1, s0, s1,...,s(m-1) % 2] 一样。也就是说,s1 - s0 = 1 ,s2 - s1 = -1 ,s3 - s2 = 1 ,s4 - s3 = -1 ,以此类推,直到 s[m - 1] - s[m - 2] = (-1)m 。\n\n请你返回 nums 中所有 交替 子数组中,最长的长度,如果不存在交替子数组,请你返回 -1 。\n\n子数组是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,3,4,3,4]\n输出:4\n解释:交替子数组有 [3,4] ,[3,4,3] 和 [3,4,3,4] 。最长的子数组为 [3,4,3,4] ,长度为4 。\n\n示例 2:\n\n输入:nums = [4,5,6]\n输出:2\n解释:[4,5] 和 [5,6] 是仅有的两个交替子数组。它们长度都为 2 。\n\n\n提示:\n\n * 2 <= nums.length <= 100\n * 1 <= nums[i] <= 104\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def alternatingSubarray(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,3,4,3,4] }\nassert my_solution.alternatingSubarray(**test_input) == 4\n\ntest_input = { \"nums\": [4,5,6] }\nassert my_solution.alternatingSubarray(**test_input) == 2\n\ntest_input = { \"nums\": [31,32,31,32,33] }\nassert my_solution.alternatingSubarray(**test_input) == 4\n\ntest_input = { \"nums\": [21,9,5] }\nassert my_solution.alternatingSubarray(**test_input) == -1\n\ntest_input = { \"nums\": [42,43,44,43,44,43,44,45,46] }\nassert my_solution.alternatingSubarray(**test_input) == 6\n\ntest_input = { \"nums\": [13,14,15,14] }\nassert my_solution.alternatingSubarray(**test_input) == 3\n\ntest_input = { \"nums\": [74,75,74,75,74,75,74,75] }\nassert my_solution.alternatingSubarray(**test_input) == 8\n\ntest_input = { \"nums\": [77,78,79,78,79,78,79,78,79,80] }\nassert my_solution.alternatingSubarray(**test_input) == 8\n\ntest_input = { \"nums\": [88,42,53] }\nassert my_solution.alternatingSubarray(**test_input) == -1\n\ntest_input = { \"nums\": [64,65,64,65,64,65,66,65,66,65] }\nassert my_solution.alternatingSubarray(**test_input) == 6\n\ntest_input = { \"nums\": [99,100,99,100] }\nassert my_solution.alternatingSubarray(**test_input) == 4\n\ntest_input = { \"nums\": [21,22] }\nassert my_solution.alternatingSubarray(**test_input) == 2\n\ntest_input = { \"n
|
|||
|
{"task_id": "biweekly-contest-108-relocate-marbles", "url": "https://leetcode.com/problems/relocate-marbles", "title": "relocate-marbles", "meta": {"questionId": "2834", "questionFrontendId": "2766", "title": "Relocate Marbles", "titleSlug": "relocate-marbles", "isPaidOnly": false, "difficulty": "Medium", "likes": 170, "dislikes": 13, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums ,表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。\n\n在 moveFrom.length 次操作内,你可以改变石块的位置。在第 i 次操作中,你将位置在 moveFrom[i] 的所有石块移到位置 moveTo[i] 。\n\n完成这些操作后,请你按升序返回所有 有 石块的位置。\n\n注意:\n\n * 如果一个位置至少有一个石块,我们称这个位置 有 石块。\n * 一个位置可能会有多个石块。\n\n示例 1:\n\n输入:nums = [1,6,7,8], moveFrom = [1,7,2], moveTo = [2,9,5]\n输出:[5,6,8,9]\n解释:一开始,石块在位置 1,6,7,8 。\n第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,位置 2,6,7,8 有石块。\n第 i = 1 步操作中,我们将位置 7 处的石块移到位置 9 处,位置 2,6,8,9 有石块。\n第 i = 2 步操作中,我们将位置 2 处的石块移到位置 5 处,位置 5,6,8,9 有石块。\n最后,至少有一个石块的位置为 [5,6,8,9] 。\n\n示例 2:\n\n输入:nums = [1,1,3,3], moveFrom = [1,3], moveTo = [2,2]\n输出:[2]\n解释:一开始,石块在位置 [1,1,3,3] 。\n第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,有石块的位置为 [2,2,3,3] 。\n第 i = 1 步操作中,我们将位置 3 处的石块移到位置 2 处,有石块的位置为 [2,2,2,2] 。\n由于 2 是唯一有石块的位置,我们返回 [2] 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= moveFrom.length <= 105\n * moveFrom.length == moveTo.length\n * 1 <= nums[i], moveFrom[i], moveTo[i] <= 109\n * 测试数据保证在进行第 i 步操作时,moveFrom[i] 处至少有一个石块。\n\"\"\"\nclass Solution:\n def relocateMarbles(self, nums: List[int], moveFrom: List[int], moveTo: List[int]) -> List[int]:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums ,表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。\n\n在 moveFrom.length 次操作内,你可以改变石块的位置。在第 i 次操作中,你将位置在 moveFrom[i] 的所有石块移到位置 moveTo[i] 。\n\n完成这些操作后,请你按升序返回所有 有 石块的位置。\n\n注意:\n\n * 如果一个位置至少有一个石块,我们称这个位置 有 石块。\n * 一个位置可能会有多个石块。\n\n示例 1:\n\n输入:nums = [1,6,7,8], moveFrom = [1,7,2], moveTo = [2,9,5]\n输出:[5,6,8,9]\n解释:一开始,石块在位置 1,6,7,8 。\n第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,位置 2,6,7,8 有石块。\n第 i = 1 步操作中,我们将位置 7 处的石块移到位置 9 处,位置 2,6,8,9 有石块。\n第 i = 2 步操作中,我们将位置 2 处的石块移到位置 5 处,位置 5,6,8,9 有石块。\n最后,至少有一个石块的位置为 [5,6,8,9] 。\n\n示例 2:\n\n输入:nums = [1,1,3,3], moveFrom = [1,3], moveTo = [2,2]\n输出:[2]\n解释:一开始,石块在位置 [1,1,3,3] 。\n第 i = 0 步操作中,我们将位置 1 处的石块移到位置 2 处,有石块的位置为 [2,2,3,3] 。\n第 i = 1 步操作中,我们将位置 3 处的石块移到位置 2 处,有石块的位置为 [2,2,2,2] 。\n由于 2 是唯一有石块的位置,我们返回 [2] 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= moveFrom.length <= 105\n * moveFrom.length == moveTo.length\n * 1 <= nums[i], moveFrom[i], moveTo[i] <= 109\n * 测试数据保证在进行第 i 步操作时,moveFrom
|
|||
|
{"task_id": "biweekly-contest-108-partition-string-into-minimum-beautiful-substrings", "url": "https://leetcode.com/problems/partition-string-into-minimum-beautiful-substrings", "title": "partition-string-into-minimum-beautiful-substrings", "meta": {"questionId": "2883", "questionFrontendId": "2767", "title": "Partition String Into Minimum Beautiful Substrings", "titleSlug": "partition-string-into-minimum-beautiful-substrings", "isPaidOnly": false, "difficulty": "Medium", "likes": 289, "dislikes": 8, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个二进制字符串 s ,你需要将字符串分割成一个或者多个 子字符串 ,使每个子字符串都是 美丽 的。\n\n如果一个字符串满足以下条件,我们称它是 美丽 的:\n\n * 它不包含前导 0 。\n * 它是 5 的幂的 二进制 表示。\n\n请你返回分割后的子字符串的 最少 数目。如果无法将字符串 s 分割成美丽子字符串,请你返回 -1 。\n\n子字符串是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:s = \"1011\"\n输出:2\n解释:我们可以将输入字符串分成 [\"101\", \"1\"] 。\n- 字符串 \"101\" 不包含前导 0 ,且它是整数 51 = 5 的二进制表示。\n- 字符串 \"1\" 不包含前导 0 ,且它是整数 50 = 1 的二进制表示。\n最少可以将 s 分成 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"111\"\n输出:3\n解释:我们可以将输入字符串分成 [\"1\", \"1\", \"1\"] 。\n- 字符串 \"1\" 不包含前导 0 ,且它是整数 50 = 1 的二进制表示。\n最少可以将 s 分成 3 个美丽子字符串。\n\n示例 3:\n\n输入:s = \"0\"\n输出:-1\n解释:无法将给定字符串分成任何美丽子字符串。\n\n\n提示:\n\n * 1 <= s.length <= 15\n * s[i] 要么是 '0' 要么是 '1' 。\n\"\"\"\nclass Solution:\n def minimumBeautifulSubstrings(self, s: str) -> int:\n ", "prompt_sft": "给你一个二进制字符串 s ,你需要将字符串分割成一个或者多个 子字符串 ,使每个子字符串都是 美丽 的。\n\n如果一个字符串满足以下条件,我们称它是 美丽 的:\n\n * 它不包含前导 0 。\n * 它是 5 的幂的 二进制 表示。\n\n请你返回分割后的子字符串的 最少 数目。如果无法将字符串 s 分割成美丽子字符串,请你返回 -1 。\n\n子字符串是一个字符串中一段连续的字符序列。\n\n示例 1:\n\n输入:s = \"1011\"\n输出:2\n解释:我们可以将输入字符串分成 [\"101\", \"1\"] 。\n- 字符串 \"101\" 不包含前导 0 ,且它是整数 51 = 5 的二进制表示。\n- 字符串 \"1\" 不包含前导 0 ,且它是整数 50 = 1 的二进制表示。\n最少可以将 s 分成 2 个美丽子字符串。\n\n示例 2:\n\n输入:s = \"111\"\n输出:3\n解释:我们可以将输入字符串分成 [\"1\", \"1\", \"1\"] 。\n- 字符串 \"1\" 不包含前导 0 ,且它是整数 50 = 1 的二进制表示。\n最少可以将 s 分成 3 个美丽子字符串。\n\n示例 3:\n\n输入:s = \"0\"\n输出:-1\n解释:无法将给定字符串分成任何美丽子字符串。\n\n\n提示:\n\n * 1 <= s.length <= 15\n * s[i] 要么是 '0' 要么是 '1' 。\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def minimumBeautifulSubstrings(self, s: str) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"s\": \"1011\" }\nassert my_solution.minimumBeautifulSubstrings(**test_input) == 2\n\ntest_input = { \"s\": \"111\" }\nassert my_solution.minimumBeautifulSubstrings(**test_input) == 3\n\ntest_input = { \"s\": \"0\" }\nassert my_solution.minimumBeautifulSubstrings(**test_input) == -1\n\ntest_input = { \"s\": \"100111000110111\" }\nassert my_solution.minimumBeautifulSubstrings(**test_input) == 4\n\ntest_input = { \"s\": \"100111000111\" }\nassert my_solution.minimumBeautifulSubstrings(**test_input) == 3\n\ntest_input = { \"s\": \"1001110001111\" }\nassert my_solution.minimu
|
|||
|
{"task_id": "biweekly-contest-108-number-of-black-blocks", "url": "https://leetcode.com/problems/number-of-black-blocks", "title": "number-of-black-blocks", "meta": {"questionId": "2889", "questionFrontendId": "2768", "title": "Number of Black Blocks", "titleSlug": "number-of-black-blocks", "isPaidOnly": false, "difficulty": "Medium", "likes": 204, "dislikes": 21, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你两个整数 m 和 n ,表示一个下标从 0 开始的 m x n 的网格图。\n\n给你一个下标从 0 开始的二维整数矩阵 coordinates ,其中 coordinates[i] = [x, y] 表示坐标为 [x, y] 的格子是 黑色的 ,所有没出现在 coordinates 中的格子都是 白色的。\n\n一个块定义为网格图中 2 x 2 的一个子矩阵。更正式的,对于左上角格子为 [x, y] 的块,其中 0 <= x < m - 1 且 0 <= y < n - 1 ,包含坐标为 [x, y] ,[x + 1, y] ,[x, y + 1] 和 [x + 1, y + 1] 的格子。\n\n请你返回一个下标从 0 开始长度为 5 的整数数组 arr ,arr[i] 表示恰好包含 i 个 黑色 格子的块的数目。\n\n示例 1:\n\n输入:m = 3, n = 3, coordinates = [[0,0]]\n输出:[3,1,0,0,0]\n解释:网格图如下:\n[https://assets.leetcode.com/uploads/2023/06/18/screen-shot-2023-06-18-at-44656-am.png]\n只有 1 个块有一个黑色格子,这个块是左上角为 [0,0] 的块。\n其他 3 个左上角分别为 [0,1] ,[1,0] 和 [1,1] 的块都有 0 个黑格子。\n所以我们返回 [3,1,0,0,0] 。\n\n示例 2:\n\n输入:m = 3, n = 3, coordinates = [[0,0],[1,1],[0,2]]\n输出:[0,2,2,0,0]\n解释:网格图如下:\n[https://assets.leetcode.com/uploads/2023/06/18/screen-shot-2023-06-18-at-45018-am.png]\n有 2 个块有 2 个黑色格子(左上角格子分别为 [0,0] 和 [0,1])。\n左上角为 [1,0] 和 [1,1] 的两个块,都有 1 个黑格子。\n所以我们返回 [0,2,2,0,0] 。\n\n\n提示:\n\n * 2 <= m <= 105\n * 2 <= n <= 105\n * 0 <= coordinates.length <= 104\n * coordinates[i].length == 2\n * 0 <= coordinates[i][0] < m\n * 0 <= coordinates[i][1] < n\n * coordinates 中的坐标对两两互不相同。\n\"\"\"\nclass Solution:\n def countBlackBlocks(self, m: int, n: int, coordinates: List[List[int]]) -> List[int]:\n ", "prompt_sft": "给你两个整数 m 和 n ,表示一个下标从 0 开始的 m x n 的网格图。\n\n给你一个下标从 0 开始的二维整数矩阵 coordinates ,其中 coordinates[i] = [x, y] 表示坐标为 [x, y] 的格子是 黑色的 ,所有没出现在 coordinates 中的格子都是 白色的。\n\n一个块定义为网格图中 2 x 2 的一个子矩阵。更正式的,对于左上角格子为 [x, y] 的块,其中 0 <= x < m - 1 且 0 <= y < n - 1 ,包含坐标为 [x, y] ,[x + 1, y] ,[x, y + 1] 和 [x + 1, y + 1] 的格子。\n\n请你返回一个下标从 0 开始长度为 5 的整数数组 arr ,arr[i] 表示恰好包含 i 个 黑色 格子的块的数目。\n\n示例 1:\n\n输入:m = 3, n = 3, coordinates = [[0,0]]\n输出:[3,1,0,0,0]\n解释:网格图如下:\n[https://assets.leetcode.com/uploads/2023/06/18/screen-shot-2023-06-18-at-44656-am.png]\n只有 1 个块有一个黑色格子,这个块是左上角为 [0,0] 的块。\n其他 3 个左上角分别为 [0,1] ,[1,0] 和 [1,1] 的块都有 0 个黑格子。\n所以我们返回 [3,1,0,0,0] 。\n\n示例 2:\n\n输入:m = 3, n = 3, coordinates = [[0,0],[1,1],[0,2]]\n输出:[0,2,2,0,0]\n解释:网格图如下:\n[https://assets.leetcode.com/uploads/2023/06/18/screen-shot-2023-06-18-at-45018-am.png]\n有 2 个块有 2 个黑色格子(左上角格子分别为 [0,0] 和 [0,1])。\n左上角为 [1,0] 和 [1,1] 的两个块,都有 1 个黑格子。\n所以我们返回 [0,2,2,0,0] 。\n\n\n提示:\n\n * 2 <= m <= 105\n * 2 <= n <= 105\n * 0 <= coordinates.length <= 104\n * coordinates[i].length == 2\n * 0 <= coordinates[i][0] < m\n * 0 <= coordinates[i][1] < n\n * coordinates 中的坐标对两两互不相同。\n\n\n<><6E>
|
|||
|
{"task_id": "weekly-contest-352-longest-even-odd-subarray-with-threshold", "url": "https://leetcode.com/problems/longest-even-odd-subarray-with-threshold", "title": "longest-even-odd-subarray-with-threshold", "meta": {"questionId": "2866", "questionFrontendId": "2760", "title": "Longest Even Odd Subarray With Threshold", "titleSlug": "longest-even-odd-subarray-with-threshold", "isPaidOnly": false, "difficulty": "Easy", "likes": 248, "dislikes": 243, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold 。\n\n请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 (0 <= l <= r < nums.length) 且满足以下条件的 最长子数组 :\n\n * nums[l] % 2 == 0\n * 对于范围 [l, r - 1] 内的所有下标 i ,nums[i] % 2 != nums[i + 1] % 2\n * 对于范围 [l, r] 内的所有下标 i ,nums[i] <= threshold\n\n以整数形式返回满足题目要求的最长子数组的长度。\n\n注意:子数组 是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums = [3,2,5,4], threshold = 5\n输出:3\n解释:在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。\n因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。\n\n示例 2:\n\n输入:nums = [1,2], threshold = 2\n输出:1\n解释:\n在这个示例中,我们选择从 l = 1 开始、到 r = 1 结束的子数组 => [2] 。\n该子数组满足上述全部条件。可以证明 1 是满足题目要求的最大长度。\n\n示例 3:\n\n输入:nums = [2,3,4,5], threshold = 4\n输出:3\n解释:\n在这个示例中,我们选择从 l = 0 开始、到 r = 2 结束的子数组 => [2,3,4] 。\n该子数组满足上述全部条件。\n因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n * 1 <= threshold <= 100\n\"\"\"\nclass Solution:\n def longestAlternatingSubarray(self, nums: List[int], threshold: int) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold 。\n\n请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 (0 <= l <= r < nums.length) 且满足以下条件的 最长子数组 :\n\n * nums[l] % 2 == 0\n * 对于范围 [l, r - 1] 内的所有下标 i ,nums[i] % 2 != nums[i + 1] % 2\n * 对于范围 [l, r] 内的所有下标 i ,nums[i] <= threshold\n\n以整数形式返回满足题目要求的最长子数组的长度。\n\n注意:子数组 是数组中的一个连续非空元素序列。\n\n示例 1:\n\n输入:nums = [3,2,5,4], threshold = 5\n输出:3\n解释:在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。\n因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。\n\n示例 2:\n\n输入:nums = [1,2], threshold = 2\n输出:1\n解释:\n在这个示例中,我们选择从 l = 1 开始、到 r = 1 结束的子数组 => [2] 。\n该子数组满足上述全部条件。可以证明 1 是满足题目要求的最大长度。\n\n示例 3:\n\n输入:nums = [2,3,4,5], threshold = 4\n输出:3\n解释:\n在这个示例中,我们选择从 l = 0 开始、到 r = 2 结束的子数组 => [2,3,4] 。\n该子数组满足上述全部条件。\n因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。\n\n提示:\n\n * 1 <= nums.length <= 100\n * 1 <= nums[i] <= 100\n * 1 <= threshold <= 100\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def longestAlternatingSubarray(self, nums: List[int], threshold: int) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [3,2,5,4], \"threshold\": 5 }\nassert my_solution.longestAlternatingSubarray(**test_input) == 3\n\ntest_input = { \"nums\": [1,
|
|||
|
{"task_id": "weekly-contest-352-prime-pairs-with-target-sum", "url": "https://leetcode.com/problems/prime-pairs-with-target-sum", "title": "prime-pairs-with-target-sum", "meta": {"questionId": "2873", "questionFrontendId": "2761", "title": "Prime Pairs With Target Sum", "titleSlug": "prime-pairs-with-target-sum", "isPaidOnly": false, "difficulty": "Medium", "likes": 311, "dislikes": 30, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个整数 n 。如果两个整数 x 和 y 满足下述条件,则认为二者形成一个质数对:\n\n * 1 <= x <= y <= n\n * x + y == n\n * x 和 y 都是质数\n\n请你以二维有序列表的形式返回符合题目要求的所有 [xi, yi] ,列表需要按 xi 的 非递减顺序 排序。如果不存在符合要求的质数对,则返回一个空数组。\n\n注意:质数是大于 1 的自然数,并且只有两个因子,即它本身和 1 。\n\n示例 1:\n\n输入:n = 10\n输出:[[3,7],[5,5]]\n解释:在这个例子中,存在满足条件的两个质数对。\n这两个质数对分别是 [3,7] 和 [5,5],按照题面描述中的方式排序后返回。\n\n示例 2:\n\n输入:n = 2\n输出:[]\n解释:可以证明不存在和为 2 的质数对,所以返回一个空数组。\n\n\n提示:\n\n * 1 <= n <= 106\n\"\"\"\nclass Solution:\n def findPrimePairs(self, n: int) -> List[List[int]]:\n ", "prompt_sft": "给你一个整数 n 。如果两个整数 x 和 y 满足下述条件,则认为二者形成一个质数对:\n\n * 1 <= x <= y <= n\n * x + y == n\n * x 和 y 都是质数\n\n请你以二维有序列表的形式返回符合题目要求的所有 [xi, yi] ,列表需要按 xi 的 非递减顺序 排序。如果不存在符合要求的质数对,则返回一个空数组。\n\n注意:质数是大于 1 的自然数,并且只有两个因子,即它本身和 1 。\n\n示例 1:\n\n输入:n = 10\n输出:[[3,7],[5,5]]\n解释:在这个例子中,存在满足条件的两个质数对。\n这两个质数对分别是 [3,7] 和 [5,5],按照题面描述中的方式排序后返回。\n\n示例 2:\n\n输入:n = 2\n输出:[]\n解释:可以证明不存在和为 2 的质数对,所以返回一个空数组。\n\n\n提示:\n\n * 1 <= n <= 106\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def findPrimePairs(self, n: int) -> List[List[int]]:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"n\": 10 }\nassert my_solution.findPrimePairs(**test_input) == [[3,7],[5,5]]\n\ntest_input = { \"n\": 2 }\nassert my_solution.findPrimePairs(**test_input) == []\n\ntest_input = { \"n\": 1 }\nassert my_solution.findPrimePairs(**test_input) == []\n\ntest_input = { \"n\": 3 }\nassert my_solution.findPrimePairs(**test_input) == []\n\ntest_input = { \"n\": 4 }\nassert my_solution.findPrimePairs(**test_input) == [[2,2]]\n\ntest_input = { \"n\": 5 }\nassert my_solution.findPrimePairs(**test_input) == [[2,3]]\n\ntest_input = { \"n\": 6 }\nassert my_solution.findPrimePairs(**test_input) == [[3,3]]\n\ntest_input = { \"n\": 7 }\nassert my_solution.findPrimePairs(**test_input) == [[2,5]]\n\ntest_input = { \"n\": 8 }\nassert my_solution.findPrimePairs(**test_input) == [[3,5]]\n\ntest_input = { \"n\": 9 }\nassert my_solution.findPrimePairs(**test_input) == [[2,7]]\n\ntest_input = { \"n\": 11 }\nassert my_solution.findPrimePairs(**test_input) == []\n\ntest_input = { \"n\": 12 }\nassert my_solution.findPrimePairs(**test_input) == [[5,7]]\n\ntest_input = { \"n\": 13 }\nassert my_solution.findPrimePairs(**test_input) == [[2,11]]\n\ntest_input = { \"n\": 14 }\nassert my_solution.findPrimePairs(**test_input) == [[3,11],[7,7]]\n\ntest_input = { \"n\": 15 }\nassert my_solution.findPrimePairs(**test_input) == [[2,13]]\n\ntest_input = { \"n\": 16 }\nassert my_solution.findPrimePairs(**test_input) == [[3,13],[5,11]]\n\ntest_input = { \"n\": 17 }\nassert my_solution.findPrimePairs(**test_input) == []\n\ntest_input = { \"n\": 18 }\nassert my_solution.findPrimePairs(**test_input) == [[5,13],[7,11]]\n\ntest_
|
|||
|
{"task_id": "weekly-contest-352-continuous-subarrays", "url": "https://leetcode.com/problems/continuous-subarrays", "title": "continuous-subarrays", "meta": {"questionId": "2868", "questionFrontendId": "2762", "title": "Continuous Subarrays", "titleSlug": "continuous-subarrays", "isPaidOnly": false, "difficulty": "Medium", "likes": 604, "dislikes": 17, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件,那么它是 不间断 的:\n\n * i,i + 1 ,...,j 表示子数组中的下标。对于所有满足 i <= i1, i2 <= j 的下标对,都有 0 <= |nums[i1] - nums[i2]| <= 2 。\n\n请你返回 不间断 子数组的总数目。\n\n子数组是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [5,4,2,4]\n输出:8\n解释:\n大小为 1 的不间断子数组:[5], [4], [2], [4] 。\n大小为 2 的不间断子数组:[5,4], [4,2], [2,4] 。\n大小为 3 的不间断子数组:[4,2,4] 。\n没有大小为 4 的不间断子数组。\n不间断子数组的总数目为 4 + 3 + 1 = 8 。\n除了这些以外,没有别的不间断子数组。\n\n示例 2:\n\n输入:nums = [1,2,3]\n输出:6\n解释:\n大小为 1 的不间断子数组:[1], [2], [3] 。\n大小为 2 的不间断子数组:[1,2], [2,3] 。\n大小为 3 的不间断子数组:[1,2,3] 。\n不间断子数组的总数目为 3 + 2 + 1 = 6 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\"\"\"\nclass Solution:\n def continuousSubarrays(self, nums: List[int]) -> int:\n ", "prompt_sft": "给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件,那么它是 不间断 的:\n\n * i,i + 1 ,...,j 表示子数组中的下标。对于所有满足 i <= i1, i2 <= j 的下标对,都有 0 <= |nums[i1] - nums[i2]| <= 2 。\n\n请你返回 不间断 子数组的总数目。\n\n子数组是一个数组中一段连续 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [5,4,2,4]\n输出:8\n解释:\n大小为 1 的不间断子数组:[5], [4], [2], [4] 。\n大小为 2 的不间断子数组:[5,4], [4,2], [2,4] 。\n大小为 3 的不间断子数组:[4,2,4] 。\n没有大小为 4 的不间断子数组。\n不间断子数组的总数目为 4 + 3 + 1 = 8 。\n除了这些以外,没有别的不间断子数组。\n\n示例 2:\n\n输入:nums = [1,2,3]\n输出:6\n解释:\n大小为 1 的不间断子数组:[1], [2], [3] 。\n大小为 2 的不间断子数组:[1,2], [2,3] 。\n大小为 3 的不间断子数组:[1,2,3] 。\n不间断子数组的总数目为 3 + 2 + 1 = 6 。\n\n\n提示:\n\n * 1 <= nums.length <= 105\n * 1 <= nums[i] <= 109\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def continuousSubarrays(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [5,4,2,4] }\nassert my_solution.continuousSubarrays(**test_input) == 8\n\ntest_input = { \"nums\": [1,2,3] }\nassert my_solution.continuousSubarrays(**test_input) == 6\n\ntest_input = { \"nums\": [31,30,31,32] }\nassert my_solution.continuousSubarrays(**test_input) == 10\n\ntest_input = { \"nums\": [65,66,67,66,66,65,64,65,65,64] }\nassert my_solution.continuousSubarrays(**test_input) == 43\n\ntest_input = { \"nums\": [42,41,42,41,41,40,39,38] }\nassert my_solution.continuousSubarrays(**test_input) == 28\n\ntest_input = { \"nums\": [35,35,36,37,36,37,38,37,38] }\nassert my_solution.continuousSubarrays(**test_input) == 39\n\ntest_input = { \"nums\": [43,44,43,44] }\nassert my_solution.continuousSubarrays(**test_input) == 10\n\ntest_input = { \"nums\": [14,15,15,15,16,16,16,16,15,16] }\nassert my_solution.continuousSubarrays(**test_input) == 55\n\ntest_input = { \"nums\": [21] }\nassert my_solution.continuousSubarrays(**test_input) == 1\n\ntest_input = { \"nums\": [34,34,33,34,33,33,32,31,30,31] }\nassert my_solution.continuousSubarrays(**t
|
|||
|
{"task_id": "weekly-contest-352-sum-of-imbalance-numbers-of-all-subarrays", "url": "https://leetcode.com/problems/sum-of-imbalance-numbers-of-all-subarrays", "title": "sum-of-imbalance-numbers-of-all-subarrays", "meta": {"questionId": "2849", "questionFrontendId": "2763", "title": "Sum of Imbalance Numbers of All Subarrays", "titleSlug": "sum-of-imbalance-numbers-of-all-subarrays", "isPaidOnly": false, "difficulty": "Hard", "likes": 278, "dislikes": 7, "categoryTitle": "Algorithms"}, "prompt": "\"\"\"\n一个长度为 n 下标从 0 开始的整数数组 arr 的 不平衡数字 定义为,在 sarr = sorted(arr) 数组中,满足以下条件的下标数目:\n\n * 0 <= i < n - 1 ,和\n * sarr[i+1] - sarr[i] > 1\n\n这里,sorted(arr) 表示将数组 arr 排序后得到的数组。\n\n给你一个下标从 0 开始的整数数组 nums ,请你返回它所有 子数组 的 不平衡数字 之和。\n\n子数组指的是一个数组中连续一段 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,3,1,4]\n输出:3\n解释:总共有 3 个子数组有非 0 不平衡数字:\n- 子数组 [3, 1] ,不平衡数字为 1 。\n- 子数组 [3, 1, 4] ,不平衡数字为 1 。\n- 子数组 [1, 4] ,不平衡数字为 1 。\n其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 3 。\n\n示例 2:\n\n输入:nums = [1,3,3,3,5]\n输出:8\n解释:总共有 7 个子数组有非 0 不平衡数字:\n- 子数组 [1, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3, 3, 5] ,不平衡数字为 2 。\n- 子数组 [3, 3, 3, 5] ,不平衡数字为 1 。\n- 子数组 [3, 3, 5] ,不平衡数字为 1 。\n- 子数组 [3, 5] ,不平衡数字为 1 。\n其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 8 。\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= nums.length\n\"\"\"\nclass Solution:\n def sumImbalanceNumbers(self, nums: List[int]) -> int:\n ", "prompt_sft": "一个长度为 n 下标从 0 开始的整数数组 arr 的 不平衡数字 定义为,在 sarr = sorted(arr) 数组中,满足以下条件的下标数目:\n\n * 0 <= i < n - 1 ,和\n * sarr[i+1] - sarr[i] > 1\n\n这里,sorted(arr) 表示将数组 arr 排序后得到的数组。\n\n给你一个下标从 0 开始的整数数组 nums ,请你返回它所有 子数组 的 不平衡数字 之和。\n\n子数组指的是一个数组中连续一段 非空 的元素序列。\n\n示例 1:\n\n输入:nums = [2,3,1,4]\n输出:3\n解释:总共有 3 个子数组有非 0 不平衡数字:\n- 子数组 [3, 1] ,不平衡数字为 1 。\n- 子数组 [3, 1, 4] ,不平衡数字为 1 。\n- 子数组 [1, 4] ,不平衡数字为 1 。\n其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 3 。\n\n示例 2:\n\n输入:nums = [1,3,3,3,5]\n输出:8\n解释:总共有 7 个子数组有非 0 不平衡数字:\n- 子数组 [1, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3, 3] ,不平衡数字为 1 。\n- 子数组 [1, 3, 3, 3, 5] ,不平衡数字为 2 。\n- 子数组 [3, 3, 3, 5] ,不平衡数字为 1 。\n- 子数组 [3, 3, 5] ,不平衡数字为 1 。\n- 子数组 [3, 5] ,不平衡数字为 1 。\n其他所有子数组的不平衡数字都是 0 ,所以所有子数组的不平衡数字之和为 8 。\n\n提示:\n\n * 1 <= nums.length <= 1000\n * 1 <= nums[i] <= nums.length\n\n\n请完成下面的代码来解决上述问题:\n```python\nclass Solution:\n def sumImbalanceNumbers(self, nums: List[int]) -> int:\n \n```", "test": "\nmy_solution = Solution()\n\ntest_input = { \"nums\": [2,3,1,4] }\nassert my_solution.sumImbalanceNumbers(**test_input) == 3\n\ntest_input = { \"nums\": [1,3,3,3,5] }\nassert my_solution.sumImbalanceNumbers(**test_input) == 8\n\ntest_
|