LeetCode——2660. 保龄球游戏的获胜者
2023-12-28 03:54:57
通过万岁!!!
- 题目比较简单,就是给你两个数组,大小为n,分别表示n次投掷保龄球的得分。然后让你按照某种规则计算出最后的总得分,从而判断胜负。计算的规则就是如果出现了10分,那么接下来两轮的分数可以进行*2的操作。
- 思路:遍历两个数组就好了,然后记录一下10分的位置,每次判断如果当前位置与10分的位置的具体小于2等于2,则这次的比分*2后再加到sum中。并且需要判断是不是要更新下标的位置。但是我写的代码空间复杂度比较高,我进行了优化,取消sum的定义,而是直接放在数组的第0个元素中,但是并没有啥提升。
- 技巧:数组的遍历
java代码
class Solution {
public int isWinner(int[] player1, int[] player2) {
int tenIdx1 = player1[0] == 10 ? 0 : -3;// 距离最开始要超过2
int tenIdx2 = player2[0] == 10 ? 0 : -3;
for (int i = 1; i < player1.length; i++) {
player1[0] += i - tenIdx1 <= 2 ? 2 * player1[i] : player1[i];
player2[0] += i - tenIdx2 <= 2 ? 2 * player2[i] : player2[i];
tenIdx1 = player1[i] == 10 ? i : tenIdx1;
tenIdx2 = player2[i] == 10 ? i : tenIdx2;
}
return player1[0] > player2[0] ? 1 : player1[0] == player2[0] ? 0 : 2;
}
}
- 总结:题目不是很难,但是主要是怎么优化一下空间复杂度。
文章来源:https://blog.csdn.net/qq_39056803/article/details/135257936
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!