【力扣周赛】第343场周赛

news2024/9/21 23:50:51

【力扣周赛】第343场周赛

    • 2660:保龄球游戏的获胜者
      • 题目描述
      • 解题思路
    • 2661:找出叠涂元素
      • 题目描述
      • 解题思路

2660:保龄球游戏的获胜者

题目描述

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

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

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

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

返回

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

输入:player1 = [4,10,7,9], player2 = [6,5,2,3]
输出:1
解释:player1 的得分是 4 + 10 + 2*7 + 2*9 = 46 。
player2 的得分是 6 + 5 + 2 + 3 = 16 。
player1 的得分高于 player2 的得分,所以 play1 在比赛中获胜,答案为 1 。
输入:player1 = [3,5,7,6], player2 = [8,10,10,2]
输出:2
解释:player1 的得分是 3 + 5 + 7 + 6 = 21 。
player2 的得分是 8 + 10 + 2*10 + 2*2 = 42 。
player2 的得分高于 player1 的得分,所以 play2 在比赛中获胜,答案为 2 。
输入:player1 = [2,3], player2 = [4,1]
输出:0
解释:player1 的得分是 2 + 3 = 5 。
player2 的得分是 4 + 1 = 5 。
player1 的得分等于 player2 的得分,所以这一场比赛平局,答案为 0 。

n == player1.length == player2.length
1 <= n <= 1000
0 <= player1[i], player2[i] <= 10

解题思路

思路:最直观的想法是,遍历数组player1和player2,假设某一玩家当前轮瓶数为x,如果某一玩家当前轮数的前两轮中的某一轮瓶数为10瓶,则该玩家当前轮分数为2x,反之为x。其中需要对第一轮和第二轮特殊处理。

int isWinner(vector<int>& player1, vector<int>& player2) {
        int n=player1.size(); //player1=player2
        int num1=player1[0],num2=player2[0]; //n>=1
        if(n>1)  //长度大于1 前两轮也包括前一轮 特殊考虑第2个位置
        {
            if(player1[0]==10)
                num1+=2*player1[1];
            else
                num1+=player1[1];
            if(player2[0]==10)
                num2+=2*player2[1];
            else
                num2+=player2[1];
        }
        for(int i=2;i<n;i++) //一起遍历
        {
            if(player1[i-1]==10||player1[i-2]==10)
                num1+=2*player1[i];
            else
                num1+=player1[i];
            if(player2[i-1]==10||player2[i-2]==10)
                num2+=2*player2[i];
            else
                num2+=player2[i];
        }
        int res;
        if(num1>num2) //比较结果
            res=1;
        else if(num1<num2)
            res=2;
        else 
            res=0;
        return res;
    }

2661:找出叠涂元素

题目描述

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

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

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

示例 1:

在这里插入图片描述

输入:arr = [1,3,4,2], mat = [[1,4],[2,3]]
输出:2
解释:遍历如上图所示,arr[2] 在矩阵中的第一行或第二列上都被涂色。

示例 2:

在这里插入图片描述

输入:arr = [2,8,7,4,1,3,5,6,9], mat = [[3,2,5],[1,4,6],[8,7,9]]
输出:3
解释:遍历如上图所示,arr[3] 在矩阵中的第二列上都被涂色。

m == mat.length
n = mat[i].length
arr.length == m * n
1 <= m, n <= 105
1 <= m * n <= 105
1 <= arr[i], mat[r][c] <= m * n
arr 中的所有整数 互不相同
mat 中的所有整数 互不相同

解题思路

思路:最直观的想法是,两重循环遍历mat,然后将其按照<值,<行下标,列下标>>的形式存储在umap中,使用row记录每行已经填充的列数,使用col记录每列已经填充的行数,然后遍历arr,将其对应元素的行和列进行加一,如果某一行或者某一列已满,则标记arr下标并退出循环且返回下标。

int firstCompleteIndex(vector<int>& arr, vector<vector<int>>& mat) 
{
   int m=mat.size();
   int n=mat[0].size();
   unordered_map<int,vector<int>> umap;
   for(int i=0;i<m;i++)  //初始化 值 [行下标,列下标]
   {
      for(int j=0;j<n;j++)
      {
          umap[mat[i][j]]={i,j};
      }
   }
   int len=arr.size();
   vector<int> row(m,0); //记录行
   vector<int> col(n,0); //记录列
   int res;
   for(int i=0;i<len;i++)
   {
      row[umap[arr[i]][0]]++;
      col[umap[arr[i]][1]]++;
      if(row[umap[arr[i]][0]]==n||col[umap[arr[i]][1]]==m) 
      //某一行或者某一列被填满
      {
         res=i;
         break;
      }
   }
   return res;
}

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

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

相关文章

系统集成项目管理工程师 笔记(第10章 项目质量管理)

文章目录 10.1.2 质量管理及其 发展史 35610.1.3 项目质量管理 35810.2.2 规划质量管理的输入 35910.2.3 规划质量管理的工具与技术 3601、成本效益分析法2、质量成本法&#xff08;一致性成本【预防、评价】 和 非一致性成本【内部、外部】&#xff09;3、七种基本质量工具&am…

【AI作诗】主流平台介绍+自主搭建

诗歌总是属于文人的浪漫&#xff0c;但随着技术的发展&#xff0c;理科生文艺起来&#xff0c;也就没文科生什么事了&#xff08;开玩笑的&#xff09;。通过本篇文章&#xff0c;笔者将给大家介绍主流的AI诗歌创作平台及如何自己搭建&#xff0c;以供大家学习参考。 技术的进…

0、Java开发常见(并发,JVM)

并发 问题详解请谈谈你对volatile的理解linkCAS你知道吗&#xff1f;link原子类Atomiclnteger的ABA问题谈谈?原子更新引用知道吗&#xff1f;link我们知道ArrayList是线程不安全&#xff0c;请编码写一个不安全的案例并给出解决方案link公平锁/非公平锁/可重入锁/递归锁/自旋…

快解析赋能企业私有云部署

很多企业形成了以总部为中心的多点生产体系结构&#xff0c;并借助网络化办公工具搭建跨区域协同办公系统&#xff0c;满足总部与分支机构间的信息互通&#xff0c;进而促进异地业务的信息共享&#xff0c;提高办公处理效率和综合管理水平。 北京某信息技术公司&#xff0c;主…

C# 使用OpenCV基本图像操作功能

C# 使用OpenCV OpenCV是一个开源的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。C#在上位机开发中比较常用&#xff0c;有些项目需要在上位机上加入一些机器视觉相关的功能&#xff0c;在下面简单介绍了C#中使用OpenCV…

JVM-0426

对象内存布局 对象的实例化 创建对象的方式&#xff1a; new 最常见的方式变形1&#xff1a;XX的静态方法 Class &#xff1a; 调用froName( )方法变形2&#xff1a;xxxBuilder / xxxFactory的静态方法 Class的newInstance( )&#xff1a;反射的方式&#xff0c;只能调用空参的…

自动控制原理笔记-频率响应法-频率特性的概念

目录 频率响应法&#xff1a; 频率特性的概念&#xff1a; 一、频率特性的定义&#xff1a; 二、频率特性的求法: 三、频率特性的物理意义: 四、频率特性的图形表示方法: 频率响应法&#xff1a; 基本思想&#xff1a;通过开环频率特性的图形对系统进行分析。 主要优点&…

【2023华中杯数学建模】B 题 小学数学应用题相似性度量及难度评估详细建模方案及实现代码

更新时间&#xff1a;2023-5-1 14:00 1 题目 B 题 小学数学应用题相似性度量及难度评估 某 MOOC 在线教育平台希望能够进行个性化教学&#xff0c;实现用户自主学习。在用户学习时&#xff0c;系统从题库中随机抽取若干道与例题同步的随堂测试题&#xff0c;记录、分析学生的学…

java的类加载浅析

类加载 类加载器 类加载器是Java虚拟机&#xff08;JVM&#xff09;的一个组成部分&#xff0c;它的主要任务是在运行时动态加载类和资源&#xff0c;以便程序能够使用它们。类加载器从文件系统、网络或其他来源中获取类的字节码&#xff0c;并将其转换为JVM可执行的形式&…

机器学习基础知识之交叉验证

文章目录 交叉验证定义1、随机子抽样验证2、K折交叉验证3、留一法交叉验证4、自助采样验证 交叉验证定义 在使用某一个数据集对模型进行训练时&#xff0c;模型的实际训练情况会受到数据集的直接影响&#xff0c;且其实际训练结果是难以确定的&#xff0c;极有可能出现欠拟合与…

【实验报告】实验四、彩色图像处理

一、实验目的 使用MatLab软件对图像进行彩色处理&#xff0c;熟悉使用MatLab软件进行图像彩 色处理的有关方法&#xff0c;并体会到图像彩色处理技术以及对图像处理的效果。 二、实验原理 &#xff08;一&#xff09;一幅RGB图像就是彩色像素的一个M x N x 3数组&#xff0…

视频搬砖项目【一个技术员是如何轻松利用视频搬运项目做到日入2000+】

无门槛人人可做副业项目&#xff0c;视频搬砖收益&#xff0c;实测一天2000&#xff01; 今天给大家分享一个微信看一看 的项目&#xff0c;操作非常简单&#xff0c;小白也很容易上手&#xff0c;不需要像某音一样去卖货&#xff0c;只要发布作品就能够有收益。 第一个、项目…

vue项目无法运行报错 error:0308010C:digital envelope routines::unsupported

文章目录 问题原因解决方法方法一方法二 问题 运行vue项目&#xff0c;报错 error:0308010C:digital envelope routines::unsupported 原因 网上查了一下&#xff0c;大体原因就是node版本不对&#xff0c;node版本太高 也有说我没有使用 Node JS 的 LTS&#xff08;长期支…

ROS2交叉编译操作

ROS2移植过程 在移植ROS2之前,先确认需要移植的版本以及其对应的依赖,这些信息可以在 ROS 2 Releases and Target Platforms 中有介绍,可依据自身需要使用的平台,参考该链接进行选择,下面以ROS2 Humble为例进行介绍ROS2移植操作。 ROS Humble依赖如下: 而ROS2的构建依赖…

sed进阶之保留空间和排除命令

shell脚本编程系列 保留空间 模式空间&#xff08;pattern space&#xff09;是一块活跃的缓冲区&#xff0c;在sed编辑器执行命令时保存着待检查的文本&#xff0c;但它并不是sed编辑器保存文本的唯一空间。sed编辑器还有另一块称作保留空间&#xff08;hold space&#xff0…

【深度学习】BERT是什么?怎么玩的?

RNN 也是一种Seq2Seq网络 这种RNN就不能并行运算&#xff0c;且对于长句子会造成损失遗忘或者梯度爆炸 Transfomer Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建&…

美国大学特别重视的批判性思维,是如何培养出来的?

美国大学非常注重培养学生的批判性思维&#xff0c;爱因斯坦有一句名言&#xff1a;“大学教育的价值&#xff0c;不在于学习很多事实&#xff0c;而在于训练大脑会思考。” 批判性思维有两个典型特征&#xff1a;&#xff08;1&#xff09;批判性思维善于对通常被接受的结论提…

SpringMVC学习总结

SpringMVC简介 我们首先要了解MVC是什么 MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xf…

oracle 19创建用户时出现“ORA-65096: invalid common user or role name”的错误

ORACLE 19命令 版本&#xff1a;Version 19.3.0.0.0 一、ORACLE 19创建用户命令 1、切换到oracle用户 [rootoracledb ~]# su - oracle Last login: Tue Jun 1 01:48:10 PDT 2021 on pts/5 2、以dba身份进入sql语句 [oracleoracledb ~]$ sqlplus "/as sysdba" …

2.rabbitMQ之交换机

1.交换机的作用 1.默认交换机会自动指定队列 2.之前一个信息必须被消费1次,现在的是一个消息可以被消费多次(发送到不同队列的前提下,正常情况下一个队列只能消费一次) 3.消息先发给交换机,然后交换机发给多个队列,可以达到多次消费的效果 如图mq3 2.交换机的类型 默认交换机…