163 次浏览
假设我们有一个二进制矩阵和另一个值k。你想将矩阵分成k块,使得每块至少包含一个1。但是切割有一些规则需要遵循:1. 选择方向:垂直或水平 2. 选择矩阵中的索引进行切割,分成两部分。 3. 如果垂直切割,就不能再切割左半部分,只能继续切割右半部分。 4. 如果水平切割,就不能再切割上半部分,只能继续…… 阅读更多
494 次浏览
假设我们有一个字符串s,我们必须检查在删除最多k个字符后是否可以将此字符串变成回文字符串。因此,如果输入类似于s = "lieuvrel",k = 4,则输出为True,我们可以删除三个字符以获得回文"level"。为了解决这个问题,我们将遵循以下步骤:- 定义一个函数lcs()。这将采用a,bm:= a的大小,n:= b的大小表:= (m + 1) x (n + 1)大小的矩阵,并填充为0对于i范围从1到m,do对于…… 阅读更多
274 次浏览
假设我们有一个名为nums的数字列表,我们必须重新排列其顺序以形成最大的可能数字,并将其作为字符串返回。因此,如果输入类似于nums = [20, 8, 85, 316],则输出为“88531620”。为了解决这个问题,我们将遵循以下步骤:- 定义一个数组temp对于nums中的每个项目i:将i作为字符串插入temp根据字典顺序对数组temp进行排序(检查两个字符串a,b何时a连接b大于b连接a与否)对于temp中的每个字符串s:res:= res连接s返回res让…… 阅读更多
567 次浏览
考虑一个国家,它表示为具有N个节点和N-1条边的树。现在每个节点代表一个城镇,每条边代表一条道路。我们有两个大小为N-1的数字列表source和dest。根据它们,第i条道路连接source[i]到dest[i]。并且道路是双向的。我们还有另一个名为population的数字列表,大小为N,其中population[i]代表第i个城镇的人口。我们试图将一些城镇升级为城市。但是,不允许两个城市相互毗邻,并且每个相邻的节点…… 阅读更多
390 次浏览
假设我们有一个名为nums的数字列表和另一个值k,我们必须找到列表中总和为k的子集的数量。如果答案非常大,则将其与10^9 + 7取模因此,如果输入类似于nums = [2, 3, 4, 5, 7] k = 7,则输出为3,因为我们可以选择子集[2,5]、[3,4]和[7]。为了解决这个问题,我们将遵循以下步骤:- dp:= 大小为(k + 1)的列表,并填充为0dp[0]:= 1m:= 10^9 + 7对于i范围从0到nums的大小- 1,do对于j范围从k到0,递减1,do如果nums[i]
98 次浏览
假设我们有一个二进制矩阵。现在考虑一个操作,我们取一个单元格并翻转它及其所有相邻单元格(上、下、左、右)。我们必须找到使矩阵仅包含0的最小操作数。如果没有解决方案,则返回-1。因此,如果输入类似于0010,则输出为3。为了解决这个问题,我们将遵循以下步骤:- 定义一个大小为4 x 2的数组dir:= {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}const int inf = 10^6定义一个函数getPos(),这将采用i,…… 阅读更多
783 次浏览
假设我们有一个笛卡尔点列表[(x1, y1), (x2, y2), ..., (xn, yn)],它表示一个多边形,并且还有两个值x和y,我们必须检查(x, y)是否位于此多边形的内部或边界上。因此,如果输入类似于points = [(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)] pt = (3, 1),则输出为True为了解决这个问题,我们将遵循以下步骤:- ans:= False对于i范围从0到多边形的大小- 1,do(x0, y0):= polygon[i](x1, y1):= polygon[(i + 1) mod size…… 阅读更多
133 次浏览
假设我们有一个名为nums的数字列表,我们必须找到最长递增子序列的长度,并且我们假设子序列可以环绕到列表的开头。因此,如果输入类似于nums = [6, 5, 8, 2, 3, 4],则输出为5,因为最长递增子序列是[2, 3, 4, 6, 8]。为了解决这个问题,我们将遵循以下步骤:- a:= 创建一个大小为nums的两倍的列表并填充nums两次ans:= 0对于i范围从0到nums的大小,do dp:= 一个新的…… 阅读更多
155 次浏览
假设我们有一个N x N二进制矩阵,其中0表示空单元格,1表示阻塞单元格,我们必须找到选择N个空单元格的方法数,使得每一行和每一列至少有一个选定单元格。如果答案非常大,则返回结果模10^9 + 7因此,如果输入类似于000000010,则输出为4,因为我们有以下配置(其中x是选定单元格):- 为了解决这个问题,我们将遵循以下步骤:- n:= 矩阵的大小定义一个函数f()。这将采用…… 阅读更多
651 次浏览
假设我们有两个大小相同的列表 `costs_from` 和 `costs_to`,其中每个索引 i 代表一个城市。我们正在建造一条从城市 i 到城市 j 的单向道路,其成本为 `costs_from[i] + costs_to[j]`。我们还有一个边列表,其中每条边都包含 [x, y],表示城市 x 到城市 y 已经存在一条单向道路。如果我们想从城市 0 到达任何城市,我们需要找到建造必要道路的最小成本。例如,如果输入是 `costs_from = [6, 2, 2, 12]`,`costs_to = [2, 2, 3,...` 阅读更多