第 383 场 LeetCode 周赛题解

news2024/10/6 14:33:02

A 边界上的蚂蚁

在这里插入图片描述
在这里插入图片描述

模拟

class Solution {
public:
    int returnToBoundaryCount(vector<int> &nums) {
        int s = 0;
        int res = 0;
        for (auto x: nums) {
            s += x;
            if (s == 0)
                res++;
        }
        return res;
    }
};

B 将单词恢复初始状态所需的最短时间 I

在这里插入图片描述
在这里插入图片描述

枚举:若经过 i i i 秒后 w o r d word word 可以恢复到其初始状态,则说明 w o r d word word 长为 n − i × k n-i\times k ni×k的后缀与长为 n − i × k n-i\times k ni×k的前缀相等, n n n w o r d word word 的长度,升序枚举 i i i 直到满足条件

class Solution {
public:
    int minimumTimeToInitialState(string word, int k) {
        int n = word.size();
        int i = 1;
        for (; i * k < n; i++) {
            int tag = 1;
            for (int j = i * k; j < n; j++)
                if (word[j] != word[j - i * k])
                    tag = 0;
            if (tag)
                return i;
        }
        return i;
    }
};

C 找出网格的区域平均强度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模拟:枚举网格中的 3 × 3 3\times3 3×3 的子网格,判断是否是区域,同时记录各位置所属于的区域数和所属于的区域的平均强度之和,最后求网格的区域平均强度

class Solution {
public:
    vector<vector<int>> resultGrid(vector<vector<int>> &image, int threshold) {
        int m = image.size(), n = image[0].size();
        vector<vector<int>> tot(m, vector<int>(n));
        vector<vector<int>> cnt(m, vector<int>(n));
        for (int i = 0; i + 2 < m; i++)
            for (int j = 0; j + 2 < n; j++) {
                int tag = 1;//判断是否是区域
                for (int x = i; x < i + 3; x++)
                    for (int y = j + 1; y < j + 3; y++)
                        if (abs(image[x][y] - image[x][y - 1]) > threshold)
                            tag = 0;
                for (int y = j; y < j + 3; y++)
                    for (int x = i + 1; x < i + 3; x++)
                        if (abs(image[x][y] - image[x - 1][y]) > threshold)
                            tag = 0;
                if (tag) {
                    int s = 0;
                    for (int x = i; x < i + 3; x++)
                        for (int y = j; y < j + 3; y++)
                            s += image[x][y];
                    s /= 9;//当前区域的平均强度
                    for (int x = i; x < i + 3; x++)
                        for (int y = j; y < j + 3; y++) {
                            cnt[x][y]++;//所属区域数目+1
                            tot[x][y] += s;//所属区域的平均强度之和+s
                        }
                }
            }
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                if (!cnt[i][j])
                    tot[i][j] = image[i][j];
                else
                    tot[i][j] /= cnt[i][j];
        return tot;
    }
};

D 将单词恢复初始状态所需的最短时间 II

在这里插入图片描述
在这里插入图片描述

字符串哈希 + 枚举:若经过 i i i 秒后 w o r d word word 可以恢复到其初始状态,则说明 w o r d word word 长为 n − i × k n-i\times k ni×k的后缀与长为 n − i × k n-i\times k ni×k的前缀相等, n n n w o r d word word 的长度,升序枚举 i i i 直到满足条件

class Solution {
public:
    int minimumTimeToInitialState(string word, int k) {
        int n = word.size();
        int i = 1;
        srand(time(0));
        shash h(word, 2333 + rand() % 100, 1e9 + rand() % 100);
        for (; i * k < n; i++) {     
            if (h(i * k, n - 1) == h(0, n - 1 - i * k))//s[i*k,n-1]和s[0,n-1-i*k]是否相等
                return i;
        }
        return i;
    }

    class shash {//字符串哈希模板
    public:
        using ll = long long;
        vector<ll> pres;
        vector<ll> epow;
        ll e, p;

        shash(string &s, ll e, ll p) {
            int n = s.size();
            this->e = e;
            this->p = p;
            pres = vector<ll>(n + 1);
            epow = vector<ll>(n + 1);
            epow[0] = 1;
            for (int i = 0; i < n; i++) {
                pres[i + 1] = (pres[i] * e + s[i]) % p;
                epow[i + 1] = (epow[i] * e) % p;
            }
        }

        ll operator()(int l, int r) {
            ll res = (pres[r + 1] - pres[l] * epow[r - l + 1] % p) % p;
            return (res + p) % p;
        }
    };
};

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

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

相关文章

Leetcode刷题笔记题解(C++):257. 二叉树的所有路径

思路&#xff1a;深度优先搜索 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right…

leetcode 算法 67.二进制求和(python版)

需求 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例 2&#xff1a; 输入&#xff1a;a “1010”, b “1011” 输出&#xff1a;“10101” 代码 class Solution…

这个门禁考勤技术,看了都说好!

在当今数字化时代&#xff0c;考勤管理对于企业、学校、机构等各类组织至关重要。随着科技的不断进步&#xff0c;传统的考勤方式逐渐显露出效率低、安全性差等问题。 因此&#xff0c;为了应对这些挑战&#xff0c;三维人脸考勤系统作为一项创新的解决方案应运而生。 客户案例…

C#,纽曼-尚克斯-威廉士素数(Newman Shanks Williams prime)的算法与源代码

1 NSW素数 素数是纽曼-尚克斯-威廉士素数&#xff08;Newman-Shanks-Williams prime&#xff0c;简写为NSW素数&#xff09;当且仅当它能写成以下的形式&#xff1a; 1981年M. Newman、D. Shanks和H. C. Williams在研究有限集合时&#xff0c;率先描述了NSW素数。 首几个NSW素…

【经典例子】Java实现2048小游戏(附带源码)

一、游戏回顾 2048游戏是一款数字益智游戏&#xff0c;目标是通过合并相同数字的方块来达到2048这个目标。游戏在一个4x4的方格上进行&#xff0c;每个方格上都有一个数字&#xff08;初始时为2或4&#xff09;。玩家可以通过滑动方向键&#xff08;上、下、左、右&#xff09;…

Java实现用户画像活动推荐系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

升级GPT4保姆级教程

前言&#xff1a; 2024-01-26开通了GPT4之后至今已经使用了两周&#xff0c;体验下来是真的强&#xff0c;各种GPTs使用起来也很丝滑&#xff0c;不需要自己额外调试。之前看版本计划&#xff0c;2024年会发布GPT5&#xff0c;如果你还没有用上GPT4的话快快来升级体验一下吧&a…

C语言之自定义类型:联合和枚举

目录 1. 联合体类型的声明2. 联合体的特点3. 联合体大小的计算联合的一个练习 4. 枚举类型的声明5. 枚举类型的优点6. 枚举类型的使用 1. 联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同的类型 但是编译器只为最大…

机器学习系列4-特征工程

机器学习系列4-特征工程 学习内容来自&#xff1a;谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录自己归纳整理的思维导图 这里写目录标题 机器学习系列4-特征工程一级目录二级目录三…

Mac利用brew安装mysql并设置初始密码

前言 之前一直是在windows上开发后段程序&#xff0c;所以只在windows上装mysql。(我记得linux只需要适应yum之类的命令即可) 另外, linux的移步 linux安装mysql (详细步骤,初次初始化,sql小例子,可视化操作客户端推荐) 好家伙&#xff0c;我佛了&#xff0c;写完当天网上发…

集群clickhouse使用和clickhouse索引的使用

ClickHouse支持多种索引类型&#xff0c;包括普通索引、范围索引、哈希索引、倒排索引等。使用索引可以加快查询速度和提高查询效率。下面是ClickHouse索引的一些使用方法&#xff1a; 1 普通索引 可以使用普通索引来加速查询特定的列&#xff0c;例如&#xff1a; CREATE TA…

MES生产制造管理:汽车零部件生产MES解决方案

某某汽车部件科技有限公司是一家铝合金零部件研发、压铸和精加工为一体的高新技术企业,拥有先进压铸、机加、检测等设备,并配套自动化生产线。为解决发动机支架等产品的全程生产质量追溯和实现机台设备联网,梅施科技提供了车间级的MES解决方案,如图所示&#xff1a; 梅施科技采…

Axios设置token到请求头的三种方式

1、为什么要携带token? 用户登录时&#xff0c;后端会返回一个token&#xff0c;并且保存到浏览器的localstorage中&#xff0c;可以根据localstorage中的token判断用户是否登录&#xff0c;登录后才有权限访问相关的页面&#xff0c;所以当发送请求时&#xff0c;都要携带to…

每日一题——LeetCode1408.数组中的字符串匹配

方法一 暴力枚举&#xff1a; 对每个单词循环判断是否是其他单词的子字符串 var stringMatching function(words) {const ret [];for (let i 0; i < words.length; i) {for (let j 0; j < words.length; j) {if (i ! j && words[j].search(words[i]) ! -1)…

探索Gin框架:Golang Gin框架请求参数的获取

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置&#xff0c;服务启动等内容。 专栏地址&…

TS项目实战二:网页计算器

使用ts实现网页计算器工具&#xff0c;实现计算器相关功能&#xff0c;使用tsify进行项目编译&#xff0c;引入Browserify实现web界面中直接使用模块加载服务。   源码下载&#xff1a;点击下载 讲解视频 TS实战项目四&#xff1a;计算器项目创建 TS实战项目五&#xff1a;B…

Unity3D判断屏幕中某个坐标点的位置是否在指定UI区域内

系列文章目录 unity工具 文章目录 系列文章目录前言一、使用rect.Contains()判断1-1、转换坐标1-2、代码如下&#xff1a;1-3、注意事项1-3、测试效果如下 二、使用坐标计算在不在区域内2-1、方法如下&#xff1a;2-2、注意事项 三、使用RectTransformUtility.ScreenPointToLo…

[每日一题] 02.06 - ABC

ABC lis list(map(int,input().split())) ABC list(input()) lis.sort() dic {A:lis[0],B:lis[1],C:lis[2]} res print(dic) for i in ABC:print(dic[i],end )我感觉没问题&#xff0c;但提交就是出问题了&#xff0c;应该不是最后多了个空格&#xff08;试过去除还是错…

股票投资指南!石家庄开通股票账户佣金最低是多少?怎么开低佣金账户?

股票投资指南可以帮助您更好地了解股票投资的基本知识和技巧&#xff0c;以便您可以做出明智的投资决策。以下是一些股票投资的基本指南&#xff1a; 了解股票市场&#xff1a;学习股票市场的基本概念和运作方式&#xff0c;包括股票交易所、股票指数和股票价格等。 定义投资目…

技术是你的安身立命之本

技术是你的安身立命之本 技术是你的安身立命之本,这句话是我父亲说的,我也一直把这句话奉为圭臬。这句话让我受用至今。 我父亲是一个两面派人士,一面是农民,一直在耕种着五亩薄田,没有像别的人家一样把田租赁出去,另一面是银行职员,勤勤恳恳在小县城的网点干了一辈子…