【力扣周赛】第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=player2int num1=player1[0],num2=player2[0]; //n>=1if(n>1)  //长度大于1 前两轮也包括前一轮 特殊考虑第2个位置{if(player1[0]==10)num1+=2*player1[1];elsenum1+=player1[1];if(player2[0]==10)num2+=2*player2[1];elsenum2+=player2[1];}for(int i=2;i<n;i++) //一起遍历{if(player1[i-1]==10||player1[i-2]==10)num1+=2*player1[i];elsenum1+=player1[i];if(player2[i-1]==10||player2[i-2]==10)num2+=2*player2[i];elsenum2+=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;
}

【力扣周赛】第343场周赛相关推荐

  1. 力扣:第 304 场周赛

    力扣:第 304 场周赛 究极手速场 6132.使数组中所有元素都等于零 问题解析 题意:一个数组,你每次可以将数组的值减少一个整数,这个整数小于等于数组的最小正整数,问多少次操作可以将数组全部变为0 ...

  2. 20211201:力扣第268周双周赛(上)

    力扣第268周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 两栋颜色不同且距离最远的房子 给植物浇水 思路与算法 双指针遍历即可,维护那个索引最大差值即可. 模拟题,正常情况需要每次走一步 ...

  3. 20210119:力扣第42周双周赛(下)

    力扣第42周双周赛(下) 题目 思路与算法 代码实现 写在最后 题目 修改后的最大二进制字符串 得到连续 K 个 1 的最少相邻交换次数 思路与算法 修改后的最大二进制字符串 这道题的思路很简单,交换 ...

  4. 20210101:力扣第42周双周赛(上)

    力扣第42周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 无法吃午餐的学生数量 平均等待时间 思路与算法 无法吃午餐的学生数量 本题直接暴力模拟也没问题,但是这应该不是题目的本意,我们可以 ...

  5. 20200827:2020力扣第33周双周赛题解

    2020力扣第33周双周赛题解 题目一 示例 解题思路与代码实现 题目二 示例 解题思路与代码实现 题目三 解题思路与代码实现 题目四 示例 解题思路与代码实现 写在最后 题目一 题目一:千位分隔数 ...

  6. 20200727:力扣第31周双周赛题解

    力扣第31周双周赛题解 题目一:在区间范围内统计奇数数目 给你两个非负整数low和high,请你返回low和high之间(包含二者)奇数的数目 0 <= low <= high <= ...

  7. C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)

    C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN ...

  8. 力扣周赛310场题解

    力扣周赛310场题解 前言 6176. 出现最频繁的偶数元素 6177. 子字符串的最优划分 前言 今天参加了力扣的第310场周赛,也是感觉到了这周的题的一个难度,有些题有想法,但是实际上让我去写的时 ...

  9. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

最新文章

  1. 立下“去O”Flag的AWS,悄悄修炼了哪些内功?
  2. 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径
  3. 图卷积网络进行骨骼识别代码_【骨骼行为识别】2s-AGCN论文理解
  4. 关于多路复用技术的思考
  5. html标签中lang属性及xml:lang属性的作用
  6. Ivan Fedorov:用已知无法想象未来 - Mixin Network开发者访谈
  7. Linux x64 下 Matlab R2013a 300 kb 脚本文件调试的 CPU 占用过高问题的解决办法
  8. (14)FPGA面试题线与逻辑
  9. linux 代码行数统计利器 ——cloc
  10. [Postgres] Group and Aggregate Data in Postgres
  11. PHP tcp短链接,示例:建立TCP链接
  12. 数论在计算机科学中的应用,近世代数思想方法在数论中的应用
  13. HttpSession基础
  14. 巧用 /etc/rc.local,开机时完成一些自动任务 - GNU/Linux,Windows的終結者 - KM大宝 - 和讯博客...
  15. 《《《总结》》》PCL的42个实例整理:1~24
  16. linux 磁盘隔离,Linux 磁盘坏道故障修复
  17. 订单打标java_java 操作打标机的Dll 文件
  18. 【2016-10-14收获】Cloud IDEs
  19. 彻底读懂行为经济学名著《思考,快与慢》
  20. Atlas2.1.0实战:安装、配置、导入hive元数据、编译排坑

热门文章

  1. 教Kindle新手 手动升级Kindle固件至5.8.5.0.1 全过程
  2. span内一连串英文字符不会自动换行
  3. 论文笔记010:[CVPR2019]VERI-Wild: A Large Dataset and a New Method for Vehicle Re-Identification in the W
  4. Python-CSP 201703-1 分蛋糕
  5. MAR在计算机组成原理上是啥,《计算机组成原理》(答案已补全).doc
  6. MFC对话框与基础控件个性化
  7. u-boot for tiny210 ver3.1 (by liukun321咕唧咕唧)
  8. Wikidata知识库
  9. Windows卡死问题分析
  10. 我的读书笔记——Spring