第 129 场 LeetCode 双周赛题解

A 构造相同颜色的正方形

在这里插入图片描述

枚举:枚举每个 3 × 3 3\times 3 3×3的矩阵,判断是否满足条件

class Solution {
  public:
    bool canMakeSquare(vector<vector<char>>& grid) {
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++) {
                int c1 = 0, c2 = 0;
                for (int r = 0; r < 2; r++)
                    for (int c = 0; c < 2; c++)
                        if (grid[i + r][j + c] == 'B')
                            c1++;
                        else
                            c2++;
                if (max(c1, c2) >= 3)
                    return true;
            }
        return false;
    }
};

B 直角三角形

在这里插入图片描述

枚举:记录各行各列的 1 1 1 的数目,然后枚举每个直接三角形的直角所在的位置 g r i d [ i ] [ j ] grid[i][j] grid[i][j]

class Solution {
  public:
    long long numberOfRightTriangles(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();
        vector<int> row(m), col(n);
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++) {
                row[i] += grid[i][j];
                col[j] += grid[i][j];
            }
        long long res = 0;
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                if (grid[i][j])
                    res += 1LL * (row[i] - 1) * (col[j] - 1);
        return res;
    }
};

C 找出所有稳定的二进制数组 I

在这里插入图片描述

动态规划:设 p [ i ] [ j ] [ t a i l ] p[i][j][tail] p[i][j][tail] 为含有 i i i 0 0 0 j j j 1 1 1 且以 t a i l tail tail 为结尾的稳定二进制数组的个数,可以枚举其全为 t a i l tail tail 的后缀数组的可能长度来进行状态转移

class Solution {
  public:
    using ll = long long;
    ll mod = 1e9 + 7;
    int numberOfStableArrays(int zero, int one, int limit) {
        ll p[zero + 1][one + 1][2]; 
        memset(p, 0, sizeof(p));
        for (int cz = 1; cz <= zero && cz <= limit; ++cz)
            p[cz][0][0] = 1;
        for (int co = 1; co <= one && co <= limit; ++co)
            p[0][co][1] = 1;
        for (int i = 0; i <= zero; i++) {
            for (int j = 0; j <= one; j++) {
                for (int last = 1; last <= limit; last++) {//全为tail的后缀数组的长度为last
                    if (i - last >= 0)
                        p[i][j][0] = (p[i][j][0] + p[i - last][j][1]) % mod;
                    if (j - last >= 0)
                        p[i][j][1] = (p[i][j][1] + p[i][j - last][0]) % mod;
                }
            }
        }
        return ((p[zero][one][0] + p[zero][one][1]) % mod + mod) % mod;
    }
};

D 找出所有稳定的二进制数组 II

在这里插入图片描述

动态规划:设 p [ i ] [ j ] [ t a i l ] p[i][j][tail] p[i][j][tail] 为含有 i i i 0 0 0 j j j 1 1 1 且以 t a i l tail tail 为结尾的稳定二进制数组的个数,枚举其全为 t a i l tail tail 的后缀数组的可能长度来进行状态转移,可以通过维护两个前缀和来优化状态转移的时间复杂度

class Solution {
  public:
    using ll = long long;
    ll mod = 1e9 + 7;
    int numberOfStableArrays(int zero, int one, int limit) {
        ll p[zero + 1][one + 1][2]; 
        ll ps0[zero + 1][one + 1];
        ll ps1[zero + 1][one + 1];
        memset(p, 0, sizeof(p));
        memset(ps0, 0, sizeof(ps0));
        memset(ps1, 0, sizeof(ps1));
        for (int i = 1; i <= zero && i <= limit; ++i) {
            p[i][0][0] = 1;
            ps0[i][0] = 1;
        }
        for (int j = 1; j <= one && j <= limit; ++j) {
            p[0][j][1] = 1;
            ps1[0][j] = 1;
        }
        for (int i = 0; i <= zero; i++) {
            for (int j = 0; j <= one; j++) {
                // [max(0,i-limit),i-1]
                if (int l = max(0, i - limit), r = i - 1; l <= r)
                    p[i][j][0] += l != 0 ? (ps1[r][j] - ps1[l - 1][j]) % mod : ps1[r][j];
                if (int l = max(0, j - limit), r = j - 1; l <= r)
                    p[i][j][1] += l != 0 ? (ps0[i][r] - ps0[i][l - 1]) % mod : ps0[i][r];
                if (j)
                    ps0[i][j] = (ps0[i][j - 1] + p[i][j][0]) % mod;
                if (i)
                    ps1[i][j] = (ps1[i - 1][j] + p[i][j][1]) % mod;
            }
        }
        return ((p[zero][one][0] + p[zero][one][1]) % mod + mod) % mod;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/611174.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

知识点(慢慢更新..break,continue,return)

目录 一. break,continue,return用法和含义 1. break 2. continue 3. return 4. 总结 一. break,continue,return用法和含义 1. break break用于完全结束一个循环&#xff0c;跳出循环体&#xff0c;执行循环后面的语句。 使用场合主要是switch语句和循环结构。 ● 在循…

burp靶场xss漏洞(初级篇)

靶场地址 http://portswigger.net/web-security/all-labs#cross-site-scripting 第一关&#xff1a;反射型 1.发现搜索框直接注入payload <script>alert(111)</script> ​ 2.出现弹窗即说明攻击成功 ​ 第二关&#xff1a;存储型 1.需要在评论里插入payload …

从零开始搭建Ubuntu CTF-pwn环境

下面就将介绍如何从零搭建一个CTF-pwn环境&#xff08;由于学习仍在进行&#xff0c;故一些环境如远程执行环境还没有搭建的经历&#xff0c;如今后需要搭建&#xff0c;会在最后进行补充&#xff09; 可以在ubuntu官方网站上下载最新的长期支持版本:(我下载的是22.04版本) h…

实景三维技术在城市运行状态监测方面的应用

随着城市化步伐的加快&#xff0c;城市规模日益扩大&#xff0c;对于城市运行状态的实时监控需求愈发迫切。传统的监控手段已无法满足现代城市管理的精细化和高效化要求。而实景三维技术的崛起&#xff0c;为城市运行状态实时监控注入了新的活力&#xff0c;带来了新的机遇与挑…

pycharm如何对for循环中第n次循序执行断点

目录 在 PyCharm 中&#xff0c;您可以设置条件断点来实现这个功能&#xff0c;这样只有在满足特定条件时断点才会被触发。以下是设置仅在 for 循环的第 n 次迭代时触发断点的步骤&#xff1a; 设置断点&#xff1a; 首先&#xff0c;找到您想要在 for 循环中设置断点的行。点击…

Vue3:项目创建

Vue 3 相对于 Vue 2 带来了许多改进和优点&#xff0c;这些改进主要是为了提高性能、开发体验和可维护性。但是对于创建项目&#xff0c;Vue3也可以采用跟Vue2相同的方式。 使用CLI创建 1. 安装Vue CLI 首先&#xff0c;确保你已经安装了Node.js&#xff08;建议使用LTS版本…

Linux 磁盘分区工具 gdisk / fdisk

fdisk 是传统的 Linux 磁盘分区工具&#xff0c;磁盘容量有2T的大小限制&#xff1b;gdisk 又叫 GPT fdisk, 作为 fdisk 的升级版&#xff0c;主要使用的是GPT分区类型&#xff0c;用来划分容量大于2T的硬盘&#xff0c;本文介绍使用方法。 简介 早期的磁盘使用 fdisk 工具分区…

Jetpack Compose一:初步了解Compose

Intellij IDEA构建Android开发环境 IntelliJ IDEA 2023.2.1 Android开发变化 IDEA配置使用Gradle 新建Compose工程&#xff0c;取名ComposeStudy 可以看到的是IDEA为项目初始化了部分代码 使用Compose开发不再需要使用xml文件来设计布局了 Compose中的Text也不同于Android V…

环形链表理解||QJ141.环形链表

在链表中&#xff0c;不光只有普通的单链表。之前写过的的一个约瑟夫环形链表是尾直接连向头的。这里的环形链表是从尾节点的next指针连向这链表的任意位置。 那么给定一个链表&#xff0c;判断这个链表是否带环。qj题141.环形链表就是一个这样的题目。 这里的思路是用快慢指…

Python修改exe之类的游戏文件中的数值

文章目录 场景查找修改 补充字节to_bytes 场景 某些游戏数值&#xff08;攻击力、射程、速度…&#xff09;被写在exe之类的文件里 要先查找游戏数值&#xff0c;然后修改 查找 首先&#xff0c;要查找数值&#xff0c;大数重复较少&#xff0c;建议从大数找起 F 游戏原件…

SpringBoot 实现 RAS+AES 自动接口解密

接口安全老生常谈了 目前常用的加密方式就对称性加密和非对称性加密&#xff0c;加密解密的操作的肯定是大家知道的&#xff0c;最重要的使用什么加密解密方式&#xff0c;制定什么样的加密策略&#xff1b;考虑到我技术水平和接口的速度&#xff0c;采用的是RAS非对称加密和AE…

动态IP避坑指南:如何挑选合适的动态代理IP?

在如今的网络环境中&#xff0c;使用动态IP代理成为实现隐私保护、访问受限内容和提高网络效率的一种常见方式&#xff0c;选择合适的国外动态IP代理可以让我们的业务处理事半功倍。面对市面上琳琅满目的选择&#xff0c;如何挑选购买适合自己的动态IP代理服务呢&#xff1f;在…

【软件工程】测试

目录 前言软件测试的目标测试准则测试方法测试方案&#xff08;重点&#xff09;白盒测试&#xff08;重点&#xff09;逻辑覆盖测试语句覆盖判定覆盖&#xff08;分支覆盖&#xff09;条件覆盖判定/条件覆盖条件组合覆盖总结 基本路径覆盖法 黑盒测试等价类法边界值分析法 软件…

速卖通ip地址会相互影响吗?如何防止账号关联?

在跨境电商行业&#xff0c;大部分平台都是不允许一个卖家操作多个店铺的&#xff0c;如果被平台检测出账户关联&#xff0c;可能会被封店。在速卖通平台&#xff0c;会通过IP地址来判断是否经营多个账号吗?IP地址会使店铺相互影响吗? 一、速卖通IP地址会关联吗? 首先各位卖…

从零开始学习生成树实验:一步一步走向精通

大家好&#xff0c;这里是G-LAB IT实验室。 ⭕5月18日 CCNAHCIA 新开班来啦&#x1f44f; 现在报名有早鸟价&#xff0c;感兴趣的可咨询 &#x1f447;&#x1f447;&#x1f447; 敲重点! 可小窗客服咨询课程价格 本课程包含线下面授、线上直播、录播、实验、考试习题、…

【数据库原理及应用】期末复习汇总高校期末真题试卷08

试卷 一、选择题(每题 2 分&#xff0c;共 30 分)    1. ___ ____是长期存储在计算机内的有组织,可共享的数据集合. A.数据库管理系统 B.数据库系统 C.数据库 D.文件组织 2. 数据库类型是按照 来划分…

Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码

Java医院绩效考核系统源码mavenVisual Studio Code一体化人力资源saas平台系统源码 医院绩效解决方案包括医院绩效管理&#xff08;BSC&#xff09;、综合奖金核算&#xff08;RBRVS&#xff09;&#xff0c;涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核…

1.基于python的单细胞数据预处理-归一化

目录 归一化的引入移位对数皮尔森近似残差两个归一化方法的总结 参考&#xff1a; [1] https://github.com/Starlitnightly/single_cell_tutorial [2] https://github.com/theislab/single-cell-best-practices 归一化的引入 在质量控制中&#xff0c;已经从数据集删除了低质…

力扣HOT100 - 739. 每日温度

解题思路&#xff1a; 单调栈 class Solution {public int[] dailyTemperatures(int[] temperatures) {int length temperatures.length;int[] ans new int[length];Deque<Integer> stack new LinkedList<>();for (int i 0; i < length; i) {int temperatu…

【NLP练习】使用seq2seq实现文本翻译

使用seq2seq实现文本翻译 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import string impo…