当前位置: 首页 > news >正文

保龄球游戏的获胜者、找出叠涂元素----2023/4/30

保龄球游戏的获胜者----2023/4/30

给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。
保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。
假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为:
如果玩家在前两轮中击中了 10 个瓶子,则为 2xi 。
否则,为 xi 。
玩家的得分是其 n 轮价值的总和。

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

示例1:

 输入: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 。

示例2:

输入: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 。

示例3:

输入: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

题解:

class Solution:def isWinner(self, player1: List[int], player2: List[int]) -> int:player_1, player_2 = player1[0], player2[0]if len(player1) > 1:if player_1 == 10:player_1 += player1[1] * 2else:player_1 += player1[1]if player_2 == 10:player_2 += player2[1] * 2else:player_2 += player2[1]if len(player1) > 2:for i in range(2, len(player1)):if player1[i-1] == 10 or player1[i-2] == 10:player_1 += 2 * player1[i]else:player_1 += player1[i]if player2[i-1] == 10 or player2[i-2] == 10:player_2 += 2 * player2[i]else:player_2 += player2[i]if player_1 == player_2:return 0elif player_1 > player_2:return 1else:return 2

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/determine-the-winner-of-a-bowling-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

找出叠涂元素----2023/4/30

给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1,m * n] 内的 所有 整数。
从下标 0 开始遍历 arr 中的每个下标 i ,并将包含整数 arr[i] 的 mat 单元格涂色。
请你找出 arr 中在 mat 的某一行或某一列上都被涂色且下标最小的元素,并返回其下标 i 。

在这里插入图片描述
在这里插入图片描述
提示:
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 中的所有整数 互不相同

题解1:超出时间限制了

class Solution:def firstCompleteIndex(self, arr: List[int], mat: List[List[int]]) -> int:for index, arr_sub in enumerate(arr):for i in range(len(mat)):for j in range(len(mat[0])):if arr_sub == mat[i][j]:mat[i][j] = 0flag = Falsex = 0for z in mat[i]:if z != 0:breakx += 1if x == len(mat[0]):flag = Truey = 0for m in range(len(mat)):if mat[m][j] != 0:breaky += 1if y == len(mat):flag = Trueif flag:return index

题解2:参考

class Solution:def firstCompleteIndex(self, arr: List[int], mat: List[List[int]]) -> int:m, n = len(mat), len(mat[0])row, col = [0]*m, [0]*nhas = {}for i in range(m):for j in range(n):has[mat[i][j]] = (i, j)for index, num in enumerate(arr):i, j = has[num]row[i] += 1col[j] += 1if row[i] == n or col[j] == m:return index

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/first-completely-painted-row-or-column
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

http://www.lryc.cn/news/65028.html

相关文章:

  • jQuery事件
  • 初识SpringCloud
  • 安装java配置
  • KBO的选秀会有哪些规定和流程`棒球7号位
  • 男子订民宿被毁约5个家庭漂泊街头 房东:住满了,没办法
  • Vue快速入门,常用指令,生命周期
  • 【热门框架】Mybatis-Plus入门介绍看这一篇文章就足够了
  • Node【Node.js 20】新特性
  • 前端程序员的职业发展规划与路线——ChatGPT的回答
  • AlgoC++第八课:手写BP
  • 【Java笔试强训 27】
  • java紫砂壶交易购物系统 mysql
  • 7-4 多态练习-计算面积
  • 很佩服的一个Google大佬,离职了。。
  • 【Python习题集1】Python 语言基础知识
  • C语言进阶——数据在内存中的存储,你知道吗?
  • 规则引擎----easy rules
  • 你手写过一把锁吗?你对轮询缓存怎么看?
  • 深入理解 spring-boot-starter-parent
  • 基于SpringBoot的线上日志阅读器
  • 【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
  • 剑指 Offer:003 前 n 个数字二进制中 1 的个数
  • DDD系列:二、应用架构设计演变
  • Spring-IOC
  • 基于Java语言开发B/S架构实现的云HIS
  • 清洁赛道新势力,米博凭“减法”突围?
  • 代码随想录训练营Day6| 242、349、202、1
  • IP-GUARD如何通过网络控制策略禁止应用程序联网?
  • Java RSA密钥转换,从RSAPrivateKey得到RSAPublicKey
  • Android 12.0 Launcher3仿ios长按app图标实现抖动动画开始拖拽停止动画