找人做购物网站,模板建站多少钱,销售网站开发意义,代理ip免费软件Leetcode 第 129 场双周赛题解 Leetcode 第 129 场双周赛题解题目1#xff1a;3127. 构造相同颜色的正方形思路代码复杂度分析 题目2#xff1a;3128. 直角三角形思路代码复杂度分析 题目3#xff1a;3129. 找出所有稳定的二进制数组 I思路代码复杂度分析 题目4#xff1a;… Leetcode 第 129 场双周赛题解 Leetcode 第 129 场双周赛题解题目13127. 构造相同颜色的正方形思路代码复杂度分析 题目23128. 直角三角形思路代码复杂度分析 题目33129. 找出所有稳定的二进制数组 I思路代码复杂度分析 题目43130. 找出所有稳定的二进制数组 II思路代码复杂度分析 Leetcode 第 129 场双周赛题解
题目13127. 构造相同颜色的正方形
思路
枚举 计数。
枚举矩阵中的每个 2×2 子矩形。
对于每个子矩形统计 B 和 W 的个数如果其中一个字母的出现次数 ≥3则返回 true。
如果 4 个子矩形都不满足要求返回 false。
代码
/** lc appleetcode.cn id3127 langcpp** [3127] 构造相同颜色的正方形*/// lc codestart
class Solution
{
public:bool canMakeSquare(vectorvectorchar grid){// 判断以 (row, col) 为左上角的 2*2 的正方形是否满足要求auto check [](int row, int col) - bool{int cntB 0, cntW 0;for (int i row; i row 1; i)for (int j col; j col 1; j){if (grid[i][j] B)cntB;elsecntW;}return cntB 3 || cntW 3;};// 对于 3*3 的矩阵只需要考虑 4 种情况return check(0, 0) || check(0, 1) || check(1, 0) || check(1, 1);}
};
// lc codeend复杂度分析
时间复杂度O(1)。
空间复杂度O(1)。
题目23128. 直角三角形
思路
套路有三个顶点枚举「中间」的直角顶点更容易计算。
设第 i 行有 rows[i] 个 1第 j 列有 cols[j] 个 1。根据乘法原理直角顶点为 (i,j) 的直角三角形有 (rows[i] - 1) * (cols[j] - 1) 个加到答案中。
代码
/** lc appleetcode.cn id3128 langcpp** [3128] 直角三角形*/// lc codestart
class Solution
{
public:long long numberOfRightTriangles(vectorvectorint grid){int m grid.size(), n m ? grid[0].size() : 0;// 每行 1 的个数vectorint rows(m, 0);for (int i 0; i m; i){int row 0;for (int j 0; j n; j)row grid[i][j];rows[i] row;}// 每列 1 的个数vectorint cols(n, 0);for (int j 0; j n; j){int col 0;for (int i 0; i m; i)col grid[i][j];cols[j] col;}long long ans 0LL;for (int i 0; i m; i)for (int j 0; j n; j)if (grid[i][j] 1){// 直角顶点为 (i,j) 的直角三角形有 (rows[i] - 1) * (cols[j] - 1) 个ans (rows[i] - 1) * (cols[j] - 1);}return ans;}
};
// lc codeend复杂度分析
时间复杂度O(m*n)其中 m 和 n 分别是矩阵 grid 的行数和列数。
空间复杂度O(mn)其中 m 和 n 分别是矩阵 grid 的行数和列数。
题目33129. 找出所有稳定的二进制数组 I
思路
记忆化搜索。
dfs(i, j, count) 表示还剩 i 个 0j 个 1已经连用 count 个 i 对应的数字的组合数。
边界dfs(0, 0, count) 1。
转移为
当 count limit 时换另一个数字开始计数 dfs(j-1, i, 1)当 count limit 时为 dfs(i-1, j, count1) dfs(j-1, i, 1)
入口dfs(zero, one, 0)。
代码
/** lc appleetcode.cn id3129 langcpp** [3129] 找出所有稳定的二进制数组 I*/// lc codestart
class Solution
{
private:const int MOD 1e9 7;public:int numberOfStableArrays(int zero, int one, int limit){int mx max(zero, one);int memo[mx 1][mx 1][limit 1];memset(memo, -1, sizeof(memo));// 还剩 i 个 0j 个 1已经连续使用了 count 个 i 对应的数字functionint(int, int, int) dfs [](int i, int j, int count) - int{if (i 0 || j 0)return 0;if (i 0 j 0)return 1;int res memo[i][j][count];if (res ! -1)return res;if (count limit){// 换另一个数字开始计数res dfs(j - 1, i, 1) % MOD;}else{// 两种都可以res (dfs(i - 1, j, count 1) dfs(j - 1, i, 1)) % MOD;}return res;};return dfs(zero, one, 0);}
};
// lc codeend复杂度分析
时间复杂度O(zero*one*limit)。
空间复杂度O(mx2*limit)其中 mx max(zero, one)。
题目43130. 找出所有稳定的二进制数组 II
思路
题解两种方法动态规划 / 组合数学Python/Java/C/Go
定义 dfs(i, j, k, limit) 为用 i 个 0j 个 1 构造稳定数组的方案数其中第 ij 个位置要填 k其中 k 为 0 或 1。 边界 入口dfs(zero, one, 0, limit) dfs(zero, one, 1, limit)。
代码
/** lc appleetcode.cn id3130 langcpp** [3130] 找出所有稳定的二进制数组 II*/// lc codestart
class Solution
{
private:const int MOD 1e9 7;public:int numberOfStableArrays(int zero, int one, int limit){int memo[zero 1][one 1][2];memset(memo, -1, sizeof(memo));// 用 i 个 0j 个 1 构造稳定数组的方案数其中第 ij 个位置要填 kfunctionint(int, int, int, int) dfs [](int i, int j, int k, int limit) - int{if (i 0){ // 递归边界return k 1 j limit;}if (j 0){ // 递归边界return k 0 i limit;}int res memo[i][j][k];if (res ! -1)return res;if (k 0){res ((long long)dfs(i - 1, j, 0, limit) dfs(i - 1, j, 1, limit) (i limit ? MOD - dfs(i - limit - 1, j, 1, limit) : 0)) %MOD;}else{res ((long long)dfs(i, j - 1, 0, limit) dfs(i, j - 1, 1, limit) (j limit ? MOD - dfs(i, j - limit - 1, 0, limit) : 0)) %MOD;}return res;};return (dfs(zero, one, 0, limit) dfs(zero, one, 1, limit)) % MOD;}
};
// lc codeend复杂度分析
时间复杂度O(zero*one)。
空间复杂度O(zero*one)。 文章转载自: http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn http://www.morning.xmjzn.cn.gov.cn.xmjzn.cn http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn http://www.morning.dfltx.cn.gov.cn.dfltx.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.jydky.cn.gov.cn.jydky.cn http://www.morning.kzhgy.cn.gov.cn.kzhgy.cn http://www.morning.brkc.cn.gov.cn.brkc.cn http://www.morning.lsmnn.cn.gov.cn.lsmnn.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.bmmyx.cn.gov.cn.bmmyx.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.nndbz.cn.gov.cn.nndbz.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.zztmk.cn.gov.cn.zztmk.cn http://www.morning.demoux.com.gov.cn.demoux.com http://www.morning.trffl.cn.gov.cn.trffl.cn http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.kpfds.cn.gov.cn.kpfds.cn http://www.morning.tfcwj.cn.gov.cn.tfcwj.cn http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.dndjx.cn.gov.cn.dndjx.cn http://www.morning.elsemon.com.gov.cn.elsemon.com http://www.morning.rqbr.cn.gov.cn.rqbr.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn http://www.morning.myxps.cn.gov.cn.myxps.cn http://www.morning.nyqzz.cn.gov.cn.nyqzz.cn http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn http://www.morning.bpmtr.cn.gov.cn.bpmtr.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.dycbp.cn.gov.cn.dycbp.cn http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn http://www.morning.haolipu.com.gov.cn.haolipu.com http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn http://www.morning.yrccw.cn.gov.cn.yrccw.cn http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn http://www.morning.hpprx.cn.gov.cn.hpprx.cn http://www.morning.wpqwk.cn.gov.cn.wpqwk.cn http://www.morning.hwlmy.cn.gov.cn.hwlmy.cn http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn http://www.morning.tgwfn.cn.gov.cn.tgwfn.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.mdwb.cn.gov.cn.mdwb.cn http://www.morning.gwsdt.cn.gov.cn.gwsdt.cn http://www.morning.trkhx.cn.gov.cn.trkhx.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn http://www.morning.lssfd.cn.gov.cn.lssfd.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.mqfw.cn.gov.cn.mqfw.cn http://www.morning.npmx.cn.gov.cn.npmx.cn http://www.morning.tzcr.cn.gov.cn.tzcr.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn