691. 贴纸拼词 我们给出了 N 种不同类型的贴纸.每个贴纸上都有一个小写的英文单词. 你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 target. 如果你愿意的话,你可以不止一次地使用每一张贴纸,而且每一张贴纸的数量都是无限的. 拼出目标 target 所需的最小贴纸数量是多少?如果任务不可能,则返回 -1. 示例 1: 输入: ["with", "example", "science"], "th…
We are given N different types of stickers. Each sticker has a lowercase English word on it. You would like to spell out the given targetstring by cutting individual letters from your collection of stickers and rearranging them. You can use each stic…
473. 火柴拼正方形 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到. 输入为小女孩拥有火柴的数目,每根火柴用其长度表示.输出即为是否能用所有的火柴拼成正方形. 示例 1: 输入: [1,1,2,2,2] 输出: true 解释: 能拼成一个边长为2的正方形,每边两根火柴. 示例 2: 输入: [3,3,3,3,4] 输出: false 解释: 不能用所有火柴拼成一个正方形.…
49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan&quo…
827. 最大人工岛 在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的岛屿面积是多少?(上.下.左.右四个方向相连的 1 可形成岛屿) 示例 1: 输入: [[1, 0], [0, 1]] 输出: 3 解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿. 示例 2: 输入: [[1, 1], [1, 0]] 输出: 4 解释: 将一格0变成1,岛屿的面积扩大为 4. 示例 3: 输入: [[1, 1], [1, 1]…
749. 隔离病毒 病毒扩散得很快,现在你的任务是尽可能地通过安装防火墙来隔离病毒. 假设世界由二维矩阵组成,0 表示该区域未感染病毒,而 1 表示该区域已感染病毒.可以在任意 2 个四方向相邻单元之间的共享边界上安装一个防火墙(并且只有一个防火墙). 每天晚上,病毒会从被感染区域向相邻未感染区域扩散,除非被防火墙隔离.现由于资源有限,每天你只能安装一系列防火墙来隔离其中一个被病毒感染的区域(一个区域或连续的一片区域),且该感染区域对未感染区域的威胁最大且保证唯一. 你需要努力使得最后有部分区域…
748. 最短完整词 如果单词列表(words)中的一个单词包含牌照(licensePlate)中所有的字母,那么我们称之为完整词.在所有完整词中,最短的单词我们称之为最短完整词. 单词在匹配牌照中的字母时不区分大小写,比如牌照中的 "P" 依然可以匹配单词中的 "p" 字母. 我们保证一定存在一个最短完整词.当有多个单词都符合最短完整词的匹配条件时取单词列表中最靠前的一个. 牌照中可能包含多个相同的字符,比如说:对于牌照 "PP",单词 &qu…
655. 输出二叉树 在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则: 行数 m 应当等于给定二叉树的高度. 列数 n 应当总是奇数. 根节点的值(以字符串格式给出)应当放在可放置的第一行正中间.根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分).你应该将左子树输出在左下部分,右子树输出在右下部分.左下和右下部分应当有相同的大小.即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西,但仍需要为另一个子树留出足够的空间.然而,如果两个子树都为空则不需要为它们留出…
803. 打砖块 我们有一组包含1和0的网格:其中1表示砖块. 当且仅当一块砖直接连接到网格的顶部,或者它至少有一块相邻(4 个方向之一)砖块不会掉落时,它才不会落下. 我们会依次消除一些砖块.每当我们消除 (i, j) 位置时, 对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这个消除而落下. 返回一个数组表示每次消除操作对应落下的砖块数目. 示例 1: 输入: grid = [[1,0,0,0],[1,1,1,0]] hits = [[1,0]] 输出: [2] 解释: 如果我们消除(…
741. 摘樱桃 一个N x N的网格(grid) 代表了一块樱桃地,每个格子由以下三种数字的一种来表示: 0 表示这个格子是空的,所以你可以穿过它. 1 表示这个格子里装着一个樱桃,你可以摘到樱桃然后穿过它. -1 表示这个格子里有荆棘,挡着你的路. 你的任务是在遵守下列规则的情况下,尽可能的摘到最多樱桃: 从位置 (0, 0) 出发,最后到达 (N-1, N-1) ,只能向下或向右走,并且只能穿越有效的格子(即只可以穿过值为0或者1的格子): 当到达 (N-1, N-1) 后,你要继续走,直…