【leetcode周赛记录——405】

405周赛记录

  • #1.leetcode100339_找出加密后的字符串
  • 2.leetcode100328_生成不含相邻零的二进制字符串
  • 3.leetcode100359_统计X和Y频数相等的子矩阵数量
  • 4.leetcode100350_最小代价构造字符串

刷了一段时间算法了,打打周赛看看什么水平了

#1.leetcode100339_找出加密后的字符串

在这里插入图片描述
思路:感觉还是挺简单的,第一次还以为是字典序的后k位,审题不认真。。。
偷了个懒,忘记怎么原地修改数组了,感觉要用辅助空间,还是直接库函数吧
用后k位字符替换,其实就是把后k位提前嘛
1,2,… ,k-1,k,k+1,…,size
1+k,k,… ,size,1,2,…,k

	string getEncryptedString(string s, int k) {
        k = k % s.size();
        return s.substr(k, s.size()) + s.substr(0, k);
    }

2.leetcode100328_生成不含相邻零的二进制字符串

在这里插入图片描述
思路:回溯,如果当前是0,下一个就不是0,除此之外,下一个都可以是1

class Solution {
    vector<string> res;
    string path;
public:
    void backtracking(int n) {
        if(path.size() == n) {
            res.push_back(path);
            return;
        }
        if(path == "" || path.back() != '0') {
            path += '0';
            backtracking(n);
            path.pop_back();
        }

        path += '1';
        backtracking(n);
        path.pop_back();

        return;
    }
    vector<string> validStrings(int n) {
        res.clear();
        path.clear();
        backtracking(n);
        
        return res;
    }
};

3.leetcode100359_统计X和Y频数相等的子矩阵数量

在这里插入图片描述
思路:动态规划吧,dp[i] = dp[i-1][j-1] + (dp[i-1][j] - dp[i-1][j-1]) + (dp[i][j-1] - dp[i-1][j-1])
大概思路就是以示例1为例
dp[i][j]初始化为1; 更新为2
dp[i][j] =

	// dp[i][j] 表示 从左上角开始长为i宽为j的矩形所含有的 x和 y的数量

class Solution {
public:
    int numberOfSubmatrices(vector<vector<char>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        vector<vector<pair<int, int>>> dp(m, vector<pair<int, int>>(n, {0, 0}));
        
        if(grid[0][0] == 'X'){
            dp[0][0].first = 1;
        } else if(grid[0][0] == 'Y') {
            dp[0][0].second = 1;
        }
        
        for(int i = 1; i < m; i++){
            dp[i][0] = dp[i-1][0];
            if(grid[i][0] == 'X'){
                dp[i][0].first++;
            } else if(grid[i][0] == 'Y') {
                dp[i][0].second++;
            }
        }
        
        for(int j = 1; j < n; j++){
            dp[0][j] = dp[0][j-1];
            if(grid[0][j] == 'X'){
                dp[0][j].first++;
            } else if(grid[0][j] == 'Y') {
                dp[0][j].second++;
            }
        }
        
//         cout << "1. === \n";

//         for(int i = 0; i < m; i++) {
//             for(int j = 0; j < n; j++){
//                 cout << "(" << dp[i][j].first << "," << dp[i][j].second << "), ";
//             }
//             cout << endl;
//         }
        
        for(int i = 1; i < m; i++)
            for(int j = 1; j < n; j++) {
                dp[i][j].first = dp[i][j-1].first + dp[i-1][j].first - dp[i-1][j-1].first;
                dp[i][j].second = dp[i][j-1].second + dp[i-1][j].second - dp[i-1][j-1].second;
                if(grid[i][j] == 'X'){
                    dp[i][j].first++;
                }
                else if(grid[i][j] == 'Y'){                    
                    dp[i][j].second++;
                }
            }
        
        int res = 0;
        
//         cout << "2. === \n";

//         for(int i = 0; i < m; i++) {
//             for(int j = 0; j < n; j++){
//                 cout << "(" << dp[i][j].first << "," << dp[i][j].second << "), ";
//             }
//             cout << endl;
//         }
        
        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++){
                if(dp[i][j].first != 0 && dp[i][j].first == dp[i][j].second)
                    res++;  
            }
        return res;
    }
};

还行,差不多一个半小时做了三道题,比以前能强点,比最近一年强很多😀

4.leetcode100350_最小代价构造字符串

在这里插入图片描述
思路:困难题,看到就想放弃了,但是想一想吧。。
我的理解是像是一个完全背包问题,但又不完全是,
分两步,第一步看能不能组成字符串,这里想不到,感觉回溯了
第二部算最少花费,这里属于完全背包了
cost[i]花费,
2. 有感觉有点像模式串匹配呀,是不是next数组能用上呢
3. 没思路。。。

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

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

相关文章

源码层面学习动态代理

前言 在Java中&#xff0c;动态代理主要分为CGLIB动态代理和JDK动态代理&#xff0c;我们从Hutool的源码也可一窥这两者的使用方式和区别&#xff1b; CGLIB动态代理 JDK动态代理 使用场景 CglibInterceptor和JdkInterceptor都是Hutool提供的代理工具&#xff0c;用于在运行时…

Redis存储原理与数据模型

Redis存储结构 存储转换 redis-value编码 string int&#xff1a;字符串长度小于等于20切能转成整数raw&#xff1a;字符串长度大于44embstr&#xff1a;字符串长度小于等于44 list quicklist&#xff08;双向链表&#xff09;ziplist&#xff08;压缩链表&#xff09; hash …

【智能算法改进】多策略改进的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法&#xff08;DBO&#xff09;原理及实现 2.改进点 混沌反向学习初始化 采用 Pwlcm 分段混沌映射&#xff0c;由于 Pwlcm 在其定义区间上具有均匀的密度函数&#xff0c;在特定的…

1.从入门到环境搭建及程序基础

目录 1.1 C督学营开营 1 老师介绍 2 学习常见问题 3 如何学习课程 1.2 程序员职业发展方向 1 前端 2 后端 3 网络安全 1.3 Windows 的 CLion 开发环境安装 1 C 语言的由来 2 安装 MinGW 编译器 3 安装 CLion 开发环境 4 运行&试用 CLion 5 新建项目​ ​6 激…

基于LangChain的RAG开发教程(二)

v1.0官方文档&#xff1a;https://python.langchain.com/v0.1/docs/get_started/introduction/ 最新文档&#xff1a;https://python.langchain.com/v0.2/docs/introduction/ LangChain是一个能够利用大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能…

家里猫咪浮毛太多怎么办?值得买的猫毛空气净化器推荐

作为一位拥有5年铲屎经验的铲屎官&#xff0c;我知道许多新手铲屎官可能听说过宠物空气净化器&#xff0c;但了解得不多。事实上&#xff0c;宠物空气净化器确实是养猫家庭必备的小家电之一。它的大面积进风口可以有效吸附空气中的微小浮毛和皮屑&#xff0c;专门的除臭技术能有…

15个最佳WooCommerce商城网站及其主要功能

正在寻找的WooCommerce商城网站来激发灵感&#xff1f; 在动态的在线购物世界中&#xff0c;WooCommerce 就像企业的超级英雄。它帮助他们轻松创建强大而可靠的在线商店&#xff0c;并与WordPress顺畅协作。 从创新的产品展示到简化的结账流程&#xff0c;每个特色网站都拥有…

Linux--线程(概念篇)

目录 1.背景知识 再谈地址空间&#xff1a; 关于页表&#xff08;32bit机器上&#xff09; 2.线程的概念和Linux中线程的实现 概念部分&#xff1a; 代码部分&#xff1a; 问题&#xff1a; 3.关于线程的有点与缺点 4.进程VS线程 1.背景知识 再谈地址空间&#xff1a…

【TB作品】51单片机 Proteus仿真00016 乒乓球游戏机

课题任务 本课题任务 (联机乒乓球游戏)如下图所示: 同步显示 oo 8个LED ooooo oo ooooo 8个LED 单片机 单片机 按键 主机 从机 按键 设计题目:两机联机乒乓球游戏 图1课题任务示意图 具体说明: 共有两个单片机,每个单片机接8个LED和1 个按键,两个单片机使用串口连接。 (2)单片机…

视频号矩阵管理系统:短视频内容营销的智能助手

随着短视频行业的蓬勃发展&#xff0c;视频号矩阵管理系统应运而生&#xff0c;为内容创作者和品牌提供了一站式的短视频管理和营销解决方案。本文将深入探讨视频号矩阵管理系统的核心功能&#xff0c;以及它如何助力用户在短视频营销领域取得成功。 视频号矩阵管理系统概述 …

C++语言相关的常见面试题目(一)

1. const关键字的作用 答&#xff1a; 省流&#xff1a;&#xff08;1&#xff09;定义变量&#xff0c;主要为了防止修改 (2) 修饰函数参数&#xff1a;防止在函数内被改变 &#xff08;3&#xff09;修饰函数的返回值 &#xff08;4&#xff09;修饰类中的成员函数 2. Sta…

怎样卸载电脑上自带的游戏?

卸载电脑上自带的游戏通常是一个简单的过程&#xff0c;以下是几种常见的方法&#xff0c;您可以根据自己的操作系统版本选择相应的步骤进行操作&#xff1a; 方法一&#xff1a;通过“设置”应用卸载&#xff08;适用于Windows 10和Windows 11&#xff09; 1. 点击开始菜单&…

fastjson-1.2.24漏洞复现

文章目录 0x01 前言0x02 环境0x03漏洞复现环境准备 0x04 漏洞分析利用链源码分析 0x05 总结0x06 可能遇到的坑 0x01 前言 影响版本 fastjson < 1.2.24 本文出于学习fastjson漏洞的目的&#xff0c;为了能更好的复现漏洞&#xff0c;需要有以下前置知识。 springbootfastj…

nginx配置反向代理-CSDN

客户需求 1、实现通过域名访问税金的发票服务&#xff08;路径格式要求&#xff1a;https://www.xxx.com&#xff09; nginx的部署 前提 1、客户在局域网内已实现通过https://ip:port/stms访问税金平台 2、客户已获取https的SSL证书 3、客户申请的外网ip和域名已绑定 部署…

LeetCode——第 405 场周赛

题目 找出加密后的字符串 给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串&#xff1a; 对于字符串 s 中的每个字符 c&#xff0c;用字符串中 c 后面的第 k 个字符替换 c&#xff08;以循环方式&#xff09;。 返回加密后的字符串。 示例 1&#xff1a; 输入&…

Visual Studio Code 教程 VsCode安装Live Server以服务形式打开html

搜索Live Server 插件,然后安装 选一个html文件&#xff0c;右键点击 Open with live server,然后就自动弹出来了

最优化方法 运筹学【】

1.无约束 常用公式 线搜索准则&#xff1a;求步长 精确线搜索&#xff08;argmin&#xff09; 最速下降&#xff1a;sd&#xff1a;线性收敛 2.算法 SD dk&#xff1a;付梯度-g newton dk&#xff1a;Gkd-g 二阶收敛&#xff0c;步长为1 阻尼牛顿&#xff1a;步长用先搜…

数据分析与挖掘实战案例-电商产品评论数据情感分析

数据分析与挖掘实战案例-电商产品评论数据情感分析 文章目录 数据分析与挖掘实战案例-电商产品评论数据情感分析1. 背景与挖掘目标2. 分析方法与过程2.1 评论预处理1. 评论去重2. 数据清洗 2.2 评论分词1. 分词、词性标注、去除停用词2. 提取含名词的评论3. 绘制词云查看分词效…

Linux dig命令常见用法

Linux dig命令常见用法 一、dig安装二、dig用法 DIG命令(Domain Information Groper命令)是常用的域名查询工具&#xff0c;通过此命令&#xff0c;你可以实现域名查询和域名问题的定位&#xff0c;对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说&#xff0c;它是一个非…

Linux中的粘滞位及mysql日期函数

只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写 权限. 为了解决这个不科学的问题, Linux引入了粘滞位的概念. 粘滞位 当一个目录被设置为"粘滞位"(用chmod t),则该目录下的文件只能由 一、超级管理员删除 二、该目录…