【leetcode周赛记录——405】

news2025/1/6 19:56:42

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.coloradmin.cn/o/1905556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务网关——服务发现】

1.服务发现 1.1 介绍 服务发现是指用注册中心来记录服务信息&#xff0c;以便其他服务快速查找已注册服务服务发现分类: 客户端服务发现服务端服务发现 1.2 客户端服务发现 客户端服务发现&#xff08;Client-side Service Discovery&#xff09;是一种微服务架构中的模式…

RAID的实现

软RAID&#xff0c;在实际工作中使用较少&#xff0c;性能太次。 mdadm工具&#xff0c;主要在虚拟机上使用&#xff0c; 硬RAID 用一个单独的芯片&#xff0c;这个芯片的名字叫做RAID卡&#xff0c;数据在RAID中进行分散的时候&#xff0c;用的就是RAID卡。 模拟RAID-5工作…

Http Json参数到x-www-form-urlencoded参数的在线转换工具

Json参数到x-www-form-urlencoded参数的在线转换工具

vue学习笔记之组件传值

说起组件传值&#xff0c;首先要介绍再vue中什么是组件。 组件&#xff08;Component&#xff09;&#xff0c;是vue中很强大的一个功能&#xff0c;可以将一些可重用的代码进行重用。所有的vue组件同时也是vue实例&#xff0c;可以接受使用相同的选项对象和提供相同的生命周期…

cf 7.7

Problem - C - Codeforces 大致意思&#xff1a; 找前缀&#xff0c;排序后使得本位之前数字和等于该位 &#xff08;以下代码超时了&#xff09; #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll …

哈希表——C语言

哈希表&#xff08;Hash Table&#xff09;是一种高效的数据结构&#xff0c;能够在平均情况下实现常数时间的查找、插入和删除操作。 哈希表的核心是哈希函数&#xff0c;哈希函数是一个将输入数据&#xff08;通常称为“键”或“key”&#xff09;转换为固定长度的整数的函数…

Linux--V4L2摄像头驱动框架及UVC浅析

一、前言 对于一个usb摄像头&#xff0c;它的内核驱动源码位于/drivers/media/usb/uvc/ 核心层&#xff1a;V4L2_dev.c文件 硬件相关层&#xff1a; uvc_driver.c文件 本篇记录基于对6.8.8.8内核下vivid-core.c文件&#xff08;虚拟视频驱动程序&#xff09;的分析&#xff…

人工智能项目论文复现

文章目录 &#xff08;一&#xff09;技术学习任务Ⅰ、机器学习之聚类1、基本介绍概念2、聚类分析基本介绍3、K均值聚类4、K近邻分类模型(KNN)5、均值漂移聚类6、代码实现7、上述三种算法总结 Ⅱ、机器学习其他常用技术1、决策树基本知识2、异常检测概念3、主成分分析4、决策树…

【SpringCloud应用框架】Nacos服务配置中心

第四章 Spring Cloud Alibaba Nacos之服务配置中心 文章目录 一、基础配置二、新建子项目1.pom文件2.YML配置3.启动类4.业务类5.Nacos配置规则 三、Nacos平台创建配置操作四、自动配置更新五、测试 一、基础配置 Nacos不仅仅可以作为注册中心来使用&#xff0c;同时它支持作为…

算法:[动态规划] 斐波那契数列模型

目录 题目一&#xff1a;第 N 个泰波那契数 题目二&#xff1a;三步问题 题目三&#xff1a;最小花费爬楼梯 题目四&#xff1a;解码方法 题目一&#xff1a;第 N 个泰波那契数 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 …

CAN总线(下)

位时序 为了灵活调整每个采样点的位置&#xff0c;使采样点对齐数据位中心附近&#xff0c;CAN总线对每一个数据位的时长进行了更细的划分&#xff0c; 分为同步段&#xff08;SS&#xff09;、传播时间段&#xff08;PTS&#xff09;、相位缓冲段1&#xff08;PBS1&#xff0…

【Threejs进阶教程-优化篇】4.Vue/React与threejs如何解决冲突和卡顿(续)

Vue/React与threejs如何解决冲突和卡顿-续 使用说明核心思路环境搭建(vuethree)vue运行机制分析业务分离使用threejs做背景 3D模块封装使用ES6的Class来让逻辑性更强Threejs尽量按需引入创建一个类扩展写法本次代码执行顺序 扩展内容添加orbitControls和辅助线解决事件覆盖 与V…

程序员学长 | 快速学会一个算法,xLSTM

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;快速学会一个算法&#xff0c;xLSTM 今天给大家分享一个超强的算法模型&#xff0c;xLSTM。 xLSTM&#xff08;Extended Long Short-Term Memory&…

AI大模型的智能心脏:向量数据库的崛起

在人工智能的飞速发展中&#xff0c;一个关键技术正悄然成为AI大模型的智能心脏——向量数据库。它不仅是数据存储和管理的革命性工具&#xff0c;更是AI技术突破的核心。随着AI大模型在各个领域的广泛应用&#xff0c;向量数据库的重要性日益凸显。 01 技术突破&#xff1a;向…

水箱高低水位浮球液位开关工作原理

工作原理 水箱高低水位浮球液位开关是一种利用浮球随液位升降来实现液位控制的设备。其基本原理是浮球在液体的浮力作用下上下浮动&#xff0c;通过磁性作用驱动与之相连的磁簧开关的开合&#xff0c;从而实现液位的高低控制和报警。当液位升高时&#xff0c;浮球上浮&#xf…

Jmeter实现接口自动化

自动化测试理论知识 什么是自动化测试&#xff1f; 让程序或工具代替人为执行测试用例什么样的项目适合做自动化&#xff1f; 1、项目周期长 --多长算长&#xff1f;&#xff08;自己公司运营项目&#xff09; 2、需求稳定&#xff08;更多具体功能/模块&#xff09; 3、需要…

LabVIEW机器视觉系统中的图像畸变、校准和矫正

在机器视觉应用中&#xff0c;图像畸变、校准和矫正是确保图像准确性的关键步骤。LabVIEW作为一种强大的图像处理和分析工具&#xff0c;提供了一系列功能来处理这些问题。以下是对图像畸变、校准和矫正的详细介绍。 图像畸变 图像畸变 是指由于摄像镜头的光学特性或拍摄角度问…

昇思25天学习打卡营第3天|MindSpore张量

# 打卡 目录 # 打卡 类 涉及知识点 1. 创建张量的4种方式 运行例子 2. 张量属性和索引 运行例子 3. 张量运算 运行例子 4. Tensor 与 Numpy 转换 5. 稀疏张量&#xff1a;CSR和COO CSRTensor 运行例子 COOTensor 运行例子 RowTensor 类 import mindspore from…

CMD命令详细介绍 | 超详细版本!

文章目录 启动cmd命令用户启动使用管理员的账号启动 文件夹命令网络命令其他常用命令介绍常用快捷方式程序员相关命令 本文参考了博客园一篇帖子&#xff0c;ULR&#xff1a;cmd常用命令介绍(可收藏) - Mrwhite86 - 博客园 (cnblogs.com) CMD是Windows操作系统自带的命令行解释…

【Linux】打包命令——tar

打包和压缩 虽然打包和压缩都涉及将多个文件组合成单个实体&#xff0c;但它们之间存在重要差异。 打包和压缩的区别&#xff1a; 打包是将多个文件或目录组合在一起&#xff0c;但不对其进行压缩。这意味着打包后的文件大小可能与原始文件相同或更大。此外&#xff0c;打包…