LeetCode周赛复盘(第343场周赛)

文章目录

  • 1、 保龄球游戏的获胜者
    • 1.1 题目链接
    • 1.2 题目描述
    • 1.3 解题代码
    • 1.4 解题思路
  • 2、找出叠涂颜元素
    • 2.1 题目链接
    • 2.2 题目描述
    • 2.3 解题代码
    • 2.4 解题思路
  • 3、前往目标的最小代价(未来补充)
    • 3.1 题目链接
    • 3.2 题目描述
    • 3.3 解题代码
    • 3.4 解题思路
  • 4、字典序最小的美丽字符串
    • 4.1 题目链接
    • 4.2 题目描述
    • 4.3 解题代码
    • 4.4 解题思路
  • 打鸡血


提示:以下是本篇文章正文内容,下面案例可供参考

1、 保龄球游戏的获胜者

1.1 题目链接

点击跳转到题目位置

1.2 题目描述

给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。

保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。

假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为:

如果玩家在前两轮中击中了 10 个瓶子,则为 2xi 。
否则,为 xi 。
玩家的得分是其 n 轮价值的总和。

返回

如果玩家 1 的得分高于玩家 2 的得分,则为 1 ;
如果玩家 2 的得分高于玩家 1 的得分,则为 2 ;
如果平局,则为 0 。

1.3 解题代码

class Solution {
public:
    int isWinner(vector<int>& player1, vector<int>& player2) {
        int sum0 = 0;
        int sum1 = 0;
        for(int i = 0; i < player1.size(); ++i){
            if(i == 0){
                sum0 += player1[i];
            } else if(i == 1){
                if(player1[0] == 10){
                    sum0 += (2*player1[i]);
                } else{
                    sum0 += player1[i];
                }
            } else{
                if(player1[i-1] == 10 || player1[i-2] == 10){
                    sum0 += (2*player1[i]);
                } else{
                    sum0 += player1[i];
                }
            }
        }
        for(int i = 0; i < player2.size(); ++i){
            if(i == 0){
                sum1 += player2[i];
            } else if(i == 1){
                if(player2[0] == 10){
                    sum1 += (2*player2[i]);
                } else{
                    sum1 += player2[i];
                }
            } else{
                if(player2[i-1] == 10 || player2[i-2] == 10){
                    sum1 += (2*player2[i]);
                } else{
                    sum1 += player2[i];
                }
            }
        }
        if(sum0 < sum1){
            return 2;
        } else if(sum0 > sum1){
            return 1;
        }
    return 0;
    }
};

1.4 解题思路

(1) 其实该段代码写的不好,实际上可以把算分合并成一个函数来解决即可。

(2) 直接一遍模拟算分即可,如果下标为0,则直接把对应的分数加上即可,如果下标为1的话,则判断下标为0的地方是否为10分,为10分,则加双倍分,否则加单倍分。如果下标大于1的时候,判断前两次得分是否有10分的,有的话则加双倍分,否则加单倍分。

(3) 最后比较得出结果即可。

2、找出叠涂颜元素

2.1 题目链接

点击跳转到题目位置

2.2 题目描述

给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1,m * n] 内的 所有 整数。

从下标 0 开始遍历 arr 中的每个下标 i ,并将包含整数 arr[i] 的 mat 单元格涂色。

请你找出 arr 中在 mat 的某一行或某一列上都被涂色且下标最小的元素,并返回其下标 i 。

2.3 解题代码

class Solution {
    unordered_map<int, int> line;
    unordered_map<int, int> row;
    unordered_map<int, int> row1;
    unordered_map<int, int> line1;
public:
    int firstCompleteIndex(vector<int>& arr, vector<vector<int>>& mat) {
        int m = mat.size();
        int n = mat[0].size();
        int len = arr.size();
        int judge_row = n;
        int judge_line = m;
        for(int i = 0; i < m; ++i){
            for(int j = 0; j < n; ++j){
                row1[mat[i][j]] = i;
                line1[mat[i][j]] = j;
            }
        }
        for(int i = 0; i < len; ++i){
            int x = row1[arr[i]];
            int y = line1[arr[i]];
            row[x]++;
            line[y]++;
            if(row[x] == judge_row || line[y] == judge_line){
                return i;
            }
        }
    return 0;
    }
};

2.4 解题思路

(1) 用四个哈希表分别来记录某一行的元素个数,某一列的元素个数,该数字在哪一行,该数字在哪一列。

(2) 然后遍历一维数组,然后将该数字所在的行的元素数目+1,该数字所在的列的元素数目+1,如果出现行或者列涂满,在输出该数字的下标即可。

3、前往目标的最小代价(未来补充)

3.1 题目链接

点击跳转到题目位置

3.2 题目描述

给你一个数组 start ,其中 start = [startX, startY] 表示你的初始位置位于二维空间上的 (startX, startY) 。另给你一个数组 target ,其中 target = [targetX, targetY] 表示你的目标位置 (targetX, targetY) 。

从位置 (x1, y1) 到空间中任一其他位置 (x2, y2) 的代价是 |x2 - x1| + |y2 - y1| 。

给你一个二维数组 specialRoads ,表示空间中存在的一些特殊路径。其中 specialRoads[i] = [x1i, y1i, x2i, y2i, costi] 表示第 i 条特殊路径可以从 (x1i, y1i) 到 (x2i, y2i) ,但成本等于 costi 。你可以使用每条特殊路径任意次数。

返回从 (startX, startY) 到 (targetX, targetY) 所需的最小代价。

3.3 解题代码

3.4 解题思路

4、字典序最小的美丽字符串

4.1 题目链接

点击跳转到题目位置

4.2 题目描述

如果一个字符串满足以下条件,则称其为 美丽字符串

它由英语小写字母表的前 k 个字母组成。
它不包含任何长度为 2 或更长的回文子字符串。
给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。

请你找出并返回一个长度为 n 的美丽字符串,该字符串还满足:在字典序大于 s 的所有美丽字符串中字典序最小。如果不存在这样的字符串,则返回一个空字符串。

对于长度相同的两个字符串 a 和 b ,如果字符串 a 在与字符串 b 不同的第一个位置上的字符字典序更大,则字符串 a 的字典序大于字符串 b 。

例如,“abcd” 的字典序比 “abcc” 更大,因为在不同的第一个位置(第四个字符)上 d 的字典序大于 c 。

4.3 解题代码

class Solution {
public:
    string smallestBeautifulString(string s, int k) {
        int n = s.size();
        string res = s;
        k--;
        for(int i = n-1; i >= 0; --i){
            int flag = 0;
            if(s[i] - 'a' == k){
                continue;
            } 
            if(i == 1){
                for(int j = s[i] - 'a' + 1; j <= k; ++j){
                    if(j != s[0] - 'a'){
                        s[i] = char(j + 'a');
                        flag = 1;
                        break;
                    }    
                }
            } else if(i == 0){
                flag = 1;
                s[i] = char(++s[i]);
            } else{
                for(int j = s[i] - 'a' + 1; j <= k; ++j){
                    if(j != s[i-1] - 'a' && j != s[i-2] - 'a'){
                        s[i] = char(j + 'a');
                        flag = 1;
                        break;
                    }
                }
            }
            if(flag == 1){
                for(int j = i + 1; j < n; ++j){
                    if(j == 1){
                        for(int t = 0; t <= k; ++t){
                            if(t != s[j-1] - 'a'){
                                s[j] = char(t + 'a');
                            }
                            break;
                        }
                    } else{
                        for(int t = 0; t <= k; ++t){
                            if(t != s[j-1] - 'a' && t != s[j-2] - 'a'){
                                s[j] = char(t + 'a');
                                break;
                            }
                        }
                    }
                }
                return s;
            }
        }
    return "";
    }
};

4.4 解题思路

(1) 字典序越小,所以要从后往前遍历去修改。

(2) 因为遍历到的位置要修改,遍历到位置后面的字母都需要修改,所以只需要考虑以该字符为末尾,前面的字符串是否为完美字符串,当前位置的字母修改能成为字典序最大的完美字符串,则修改该字母。修改的范围为s[i] + 1~ ‘a’ + k - 1.

(3) 接着修改修改位置~最后的字母,修改的范围为’a’ ~ ‘a’ + k - 1。

(4) 按照上述策略去修改,就能得到字典序最小且符合要求的完美字符串。如果没得到,则输出“”即可。

打鸡血

心若在,梦就在,只不过是从头再来。哪怕每次周赛一题都做不出来,都得努力去研究,因为未来的某一天

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

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

相关文章

简单分享微信小程序上的招聘链接怎么做

招聘小程序的主要用户就是企业招聘端和找工作人员的用户端,下面从这两个端来对招聘小程序开发的功能进行介绍。 企业端功能 1、岗位发布:企业根据自身岗位需求,在招聘app上发布招聘岗位及所需技能。 2.简历筛选:根据求职者提交的简历选择合适的简历,并对公开发布的简历进行筛…

【五一创作】【Simulink】采用延时补偿的三相并网逆变器FCS-MPC

&#x1f449; 【Simulink】基于FCS-MPC的三相并网逆变器控制 上一篇博客介绍了FCS-MPC的基本操作&#xff0c;并且以三相并网逆变器为控制对象进行了Simulink仿真。 但实际仿真中没有考虑补偿延时。本篇博客将讨论为什么要考虑延时并进行补偿&#xff0c;最后对此仿真验证。 …

【Java数据结构】顺序表、队列、栈、链表、哈希表

顺序表 定义 存放数据使用数组但是可以编写一些额外的操作来强化为线性表&#xff0c;底层依然采用顺序存储实现的线性表&#xff0c;称为顺序表 代码实现 创建类型 先定义一个新的类型 public class ArrayList<E> {int capacity 10; //顺序表的最大容量int size …

【Java笔试强训 6】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;不要二 …

基于微信小程序的垃圾分类系统的研究与实现(附源码和教程)

1. 简介 本文介绍的事基于微信小程序的垃圾分类系统&#xff0c;主要实现的功能有登录、注册、垃圾分类查询、垃圾预约回收、垃圾分类功能。 2.系统设计与实现 本章节是论文的重点&#xff0c;基于上一章介绍的总体设计框架的搭建&#xff0c;详细对小程序的页面布局、流程设…

Photoshop如何使用选区之实例演示?

文章目录 0.引言1.利用快速选择工具抠图2.制作网店产品优惠券3.利用选区改变眼睛颜色4.抠取复杂的花束5.制作丁达尔光照效果6.利用选区调整图像局部颜色 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及…

MySQL基础

目标&#xff1a; 掌握MySQL的安装&#xff0c;登录&#xff0c;基础操作 掌握DDL语句 掌握DML语句 掌握DQL语句 1、数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果&#xff0c;当然文件存储…

Mysql为json字段创建索引的两种方式

目录 一、前言二、通过虚拟列添加索引&#xff08;Secondary Indexes and Generated Columns&#xff09;三、多值索引&#xff08;Using multi-valued Indexes&#xff09;四、官网地址 一、前言 JSON 数据类型是在mysql5.7版本后新增的&#xff0c;同 TEXT&#xff0c;BLOB …

【社区图书馆】二、LED子系统——硬件驱动层

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;嵌入式领域新星创作者 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录 1、gpio_led_probe分析1.1 相关数据结构1.1.1 gpio_led_platform_data1.1.2 gpio_leds_priv 1.2 实…

【论文代码阅读】LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS

最近很多工作好像都绕不开lora&#xff0c;无论是sd还是llm.... 1. 背景 问题&#xff1a;大模型重新训练所有模型参数的完全微调变得不太可行。lora在做什么 我们提出了低秩自适应&#xff0c;即LoRA&#xff0c;它冻结预先训练的模型权重&#xff0c;并将可训练的秩分解矩…

【Redis—哨兵机制】

概念 当进行主从复制时&#xff0c;如果主节点挂掉了&#xff0c;那么没有主节点来服务客户端的写操作请求了&#xff0c;也没有主节点给从节点进行数据同步了。此时需要进行主从切换&#xff08;主从节点故障转移&#xff09;&#xff0c;Redis在 2.8 版本以后提供的哨兵&…

C++标准库 --- 动态内存 (Primer C++ 第五版 · 阅读笔记)

C标准库 --动态内存 (Primer C 第五版 阅读笔记&#xff09; 第12章 动态内存------(持续更新)12.1、动态内存与智能指针12.1.1、shared_ptr类12.1.2、直接管理内存12.1.3、shared_ptr和new结合使用12.1.4、智能指针和异常12.1.5、unique_ptr12.1.6、weak_ptr 12.2、动态数组1…

抓马,互联网惊现AI鬼城:上万个AI发帖聊天,互相嗨聊,人类被禁言

近日又有一个社区迷惑走红 上万个AI发帖聊天&#xff0c;人类不得入内&#xff1f; 据红星新闻报道 近日&#xff0c;一个名为Chirper的AI网络社区突然爆火 上万个AI聊天机器人在其中 激烈地聊天、互动、分享 社区主页右上角明确写着&#xff1a; “这是一个人工智能的社交…

【五一创作】( 字符串) 409. 最长回文串 ——【Leetcode每日一题】

❓ 409. 最长回文串 难度&#xff1a;简单 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的回文串 。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s “abccccdd”…

蒙蒂霍尔悖论

贝叶斯与频率主义对蒙蒂霍尔问题的解 在定义概率时&#xff0c;通常有两种思想流派&#xff1a;贝叶斯主义和频率主义。前者将概率视为我们对事件发生的信念程度&#xff0c;而后者则将其视为事件发生的相对频率。这篇文章介绍了使用贝叶斯和频率主义方法来解决著名的蒙蒂霍尔问…

IDEA Java 第一个mybatis入门程序

文章目录 准备mysql 开始新建maven项目maven添加引用mybatis配置文件工具类创建实例类添加mappermappermapper.xml 测试类 发现问题org.apache.ibatis.binding.BindingException: Type interface com.cpyy.mapper.UserMapper is not known to the MapperRegistry.The error may…

chatGPT国内可用镜像源地址

chatGPT国内可用镜像源地址 彷丶徨丶 关注 IP属地: 湖北 0.811 2023.03.15 16:02:16 字数 1,152 阅读 249,582 如果你正在尝试访问Chatgpt网站&#xff0c;但由于某些原因无法访问该网站&#xff0c;那么你可以尝试使用Chatgpt的国内镜像网站。以下是一些Chatgpt国内镜像网站的…

【MYSQL】数据类型和约束

目录 数据类型 1.数值类型 1.1.位--类型bit(M) 1.2. 整数类型--tinyint&#xff0c;smallint&#xff0c;int&#xff0c;bigint 1.3.小数类型--float、decimal 2.字符类型--char、varchar 3.日期类型--datetime、timestamp 4.string类型--enum和set mysql的约束 1.空…

【人工智能】— 不确定性、先验概率/后验概率、概率密度、贝叶斯法则、朴素贝叶斯 、最大似然估计

【人工智能】— 不确定性 不确定性不确定性与理性决策基本概率符号先验概率(无条件概率)/后验概率(条件概率)随机变量概率密度联合概率分布公理完全联合分布概率演算独立性 贝叶斯法则例1例2 使用贝叶斯规则&#xff1a;合并证据朴素贝叶斯最大似然估计小结 不确定性 不确定性与…

PCIe物理层详细总结-PCIE专题知识(一)

目录 一、简介二、PCIe物理层结构及功能2.1 PCIe端对端连接方式2.2 PCIe组成2.2.1 逻辑层(Logic)1 发送逻辑2 接收逻辑 2.2.2 电气层(Electrical)1 物理层-电气(Physical Layer Electrical)2 数据传送----差分方式 2.2.3 PLP介绍 三、其他相关链接1、PCI总线及发展历程总结2、P…
最新文章