题目460.通过翻转子数组使两个数组相等
给你两个长度相同的整数数组 target 和 arr 。
每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。
如果你能让 arr 变得与 target 相同,返回 True;否则,返回 False 。
用例
1 | 输入:target = [1,2,3,4], arr = [2,4,1,3] |
1 | 输入:target = [7], arr = [7] |
解题思路
排序后的列表相同就可以了
代码
1 | class Solution: |
题目1461.检查一个字符串是否包含所有长度为 K 的二进制子串
给你一个二进制字符串 s 和一个整数 k 。
如果所有长度为 k 的二进制字符串都是 s 的子串,请返回 True ,否则请返回 False 。
用例
输入:s = “00110110”, k = 2
输出:true
输入:s = “00110”, k = 2
输出:true
解题思路
对字符串按照其二进制最大长度进行分割,并加入到set中,如果set的长度等于2**k,就满足
代码
1 | class Solution: |
1 | class Solution(object): |
题目1462.课程安排 IV
你总共需要上 n 门课,课程编号依次为 0 到 n-1 。
有的课会有直接的先修课程,比如如果想上课程 0 ,你必须先上课程 1 ,那么会以 [1,0] 数对的形式给出先修课程数对。
给你课程总数 n 和一个直接先修课程数对列表 prerequisite 和一个查询对列表 queries 。
对于每个查询对 queries[i] ,请判断 queries[i][0] 是否是 queries[i][1] 的先修课程。
请返回一个布尔值列表,列表中每个元素依次分别对应 queries 每个查询对的判断结果。
注意:如果课程 a 是课程 b 的先修课程且课程 b 是课程 c 的先修课程,那么课程 a 也是课程 c 的先修课程。
用例
输入:n = 2, prerequisites = [[1,0]], queries = [[0,1],[1,0]]
输出:[false,true]
解题思路
- 利用并查集可以做,但是需要利用递归将课程的前置的前置进行遍历
- 采用dfs方法进行搜索
- 利用动态规划,动态规划的思路为
- 把dp[i][j]定义为i是j的前置课程
- 针对某一课程k检验i与j是否能通过k实现链接如果能,则有
dp[i][j]=dp[i][k] and dp[k][j]
- 最后的状态转移方程为:
dp[i][k] = dp[i][k] or (dp[i][j] and dp[j][k])
代码
1 | from typing import List |
题目1463.摘樱桃 II
给你一个 rows x cols 的矩阵 grid 来表示一块樱桃地。 grid 中每个格子的数字表示你能获得的樱桃数目。
你有两个机器人帮你收集樱桃,机器人 1 从左上角格子 (0,0) 出发,机器人 2 从右上角格子 (0, cols-1) 出发。
请你按照如下规则,返回两个机器人能收集的最多樱桃数目:
- 从格子 (i,j) 出发,机器人可以移动到格子 (i+1, j-1),(i+1, j) 或者 (i+1, j+1) 。
- 当一个机器人经过某个格子时,它会把该格子内所有的樱桃都摘走,然后这个位置会变成空格子,即没有樱桃的格子。
- 当两个机器人同时到达同一个格子时,它们中只有一个可以摘到樱桃。
- 两个机器人在任意时刻都不能移动到 grid 外面。
- 两个机器人最后都要到达 grid 最底下一行。
用例
1 | 输入:grid = [[3,1,1],[2,5,1],[1,5,5],[2,1,1]] |
1 | 输入:grid = [[1,0,0,0,0,0,1],[2,0,0,0,0,3,0],[2,0,9,0,0,0,0],[0,3,0,5,4,0,0],[1,0,2,3,0,0,6]] |
1 | 输入:grid = [[1,0,0,3],[0,0,0,3],[0,0,3,3],[9,0,3,3]] |
解题思路
动态规划
根据上一行的结果来选择下一行可能可行的结果,定义一个三维的dp数组dp = [[[-1 for k in range(n)] for j in range(n)] for i in range(m)]
,其中dp[i][j][k]
表示在第i行两个机器人分别处在j,k位置时,能取到的最大值,注意当两个机器人走到同一个位置时,需要进去一个数递归
暴力搜索
代码
1 | from typing import List |
发布时间: 2020-06-01
最后更新: 2020-06-03
本文标题: leetcode双周赛27
本文链接: http://huangketsudou.github.io/2020/06/01/leetcode双周赛27/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处