【LetMeFly】2960.統計已測試設備:看測試了多少次
力扣題目鏈接:https://leetcode.cn/problems/count-tested-devices-after-test-operations/
給你一個長度為 n
、下標從 0 開始的整數數組 batteryPercentages
,表示 n
個設備的電池百分比。
你的任務是按照順序測試每個設備 i
,執行以下測試操作:
- 如果
batteryPercentages[i]
大于0
:<ul><li><strong>增加</strong> 已測試設備的計數。</li><li>將下標在 <code>[i + 1, n - 1]</code> 的所有設備的電池百分比減少 <code>1</code>,確保它們的電池百分比<strong> 不會低于</strong> <code>0</code> ,即 <code>batteryPercentages[j] = max(0, batteryPercentages[j] - 1)</code>。</li><li>移動到下一個設備。</li> </ul> </li> <li>否則,移動到下一個設備而不執行任何測試。</li>
返回一個整數,表示按順序執行測試操作后 已測試設備 的數量。
?
示例 1:
輸入:batteryPercentages = [1,1,2,1,3] 輸出:3 解釋:按順序從設備 0 開始執行測試操作: 在設備 0 上,batteryPercentages[0] > 0 ,現在有 1 個已測試設備,batteryPercentages 變為 [1,0,1,0,2] 。 在設備 1 上,batteryPercentages[1] == 0 ,移動到下一個設備而不進行測試。 在設備 2 上,batteryPercentages[2] > 0 ,現在有 2 個已測試設備,batteryPercentages 變為 [1,0,1,0,1] 。 在設備 3 上,batteryPercentages[3] == 0 ,移動到下一個設備而不進行測試。 在設備 4 上,batteryPercentages[4] > 0 ,現在有 3 個已測試設備,batteryPercentages 保持不變。 因此,答案是 3 。
示例 2:
輸入:batteryPercentages = [0,1,2] 輸出:2 解釋:按順序從設備 0 開始執行測試操作: 在設備 0 上,batteryPercentages[0] == 0 ,移動到下一個設備而不進行測試。 在設備 1 上,batteryPercentages[1] > 0 ,現在有 1 個已測試設備,batteryPercentages 變為 [0,1,1] 。 在設備 2 上,batteryPercentages[2] > 0 ,現在有 2 個已測試設備,batteryPercentages 保持不變。 因此,答案是 2 。
?
提示:
1 <= n == batteryPercentages.length <= 100
0 <= batteryPercentages[i] <= 100
解題方法:模擬
使用一個變量ans
來記錄測試的總次數。測試發生一次,后面所有的電池都要掉一格電。但是不用真的模擬讓他們都掉電。
遍歷電池數組,看當前電量是否大于測試次數。若大于則將發生測試,否則什么都不會發生。
- 時間復雜度 O ( n ) O(n) O(n)
- 空間復雜度 O ( 1 ) O(1) O(1)
AC代碼
C++
class Solution {
public:int countTestedDevices(vector<int>& batteryPercentages) {int ans = 0;for (int t : batteryPercentages) {if (t - ans > 0) {ans++;}}return ans;}
};
Python
# from typing import Listclass Solution:def countTestedDevices(self, batteryPercentages: List[int]) -> int:ans = 0for t in batteryPercentages:if t > ans:ans += 1return ans
同步發文于CSDN和我的個人博客,原創不易,轉載經作者同意后請附上原文鏈接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/138672383