判断是否可以赢得数字游戏

tobegold574 Lv5

判断是否可以赢得数字游戏(easy)

做题过程

直接一次遍历+计算两位数总和、一位数总和、总和,然后比较前两者是否小于第三者的一半,但实际上,只需要算前面两个,判断它们相不相等,因为 目标数组的范围不到三位数

算法概述

原题

本题要求判断爱丽丝只取两位数或者一位数能不能赢取剩下数字的鲍勃。但实际上因为给定了数组最大值范围,所以完全可以 优化判断条件和减少临时变量使用

  • 时间复杂度为O(n):一次遍历
  • 空间复杂度为O(1)

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public boolean canAliceWin(int[] nums) {
int singleDigitSum = 0;
int doubleDigitSum = 0;
for (int num : nums) {
// 我用了除法,其实不用的,而且除法很耗时间
if (num < 10) {
singleDigitSum += num;
} else {
doubleDigitSum += num;
}
}
// 因为只有个位数和两位数,只要两者不相等,爱丽丝总可以取到一个大的
return singleDigitSum != doubleDigitSum;
}
}

C++

1
// 一样的

总结

一定要留心对数据范围的说明 ,这决定了优化的上限和超时的下限。

  • Title: 判断是否可以赢得数字游戏
  • Author: tobegold574
  • Created at : 2024-11-30 19:32:10
  • Updated at : 2024-12-02 13:32:52
  • Link: https://tobegold574.me/2024/11/30/判断是否可以赢得数字游戏/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments