3038. 相同分数的最大操作数目 I
题目描述:
给你一个整数数组 nums
,如果 nums
至少 包含 2
个元素,你可以执行以下操作:
- 选择
nums
中的前两个元素并将它们删除。
一次操作的 分数 是被删除元素的和。
在确保 所有操作分数相同 的前提下,请你求出 最多 能进行多少次操作。
请你返回按照上述要求 最多 可以进行的操作次数。
示例 1:
输入:nums = [3,2,1,4,5]
输出:2
解释:我们执行以下操作:
- 删除前两个元素,分数为 3 + 2 = 5 ,nums = [1,4,5] 。
- 删除前两个元素,分数为 1 + 4 = 5 ,nums = [5] 。
由于只剩下 1 个元素,我们无法继续进行任何操作。
示例 2:
输入:nums = [3,2,6,1,4]
输出:1
解释:我们执行以下操作:
- 删除前两个元素,分数为 3 + 2 = 5 ,nums = [6,1,4] 。
由于下一次操作的分数与前一次不相等,我们无法继续进行任何操作。
提示:
2 <= nums.length <= 100
1 <= nums[i] <= 1000
解题分析及思路:
方法:模拟
思路:
本题直接模拟即可,每次取前两个数 nums[i]+nums[i+1]
与第一个第二个数之和 sum := nums[0] + nums[1]
比较,直到条件不满足,则退出
func maxOperations(nums []int) (result int) {
sum := nums[0] + nums[1]
for i := 0; i+1 < len(nums); i = i + 2 {
if sum != nums[i]+nums[i+1] {
break
}
result++
}
return
}
复杂度:
- 时间复杂度:O(N)
- 空间复杂度:O(1)
执行结果:
- 执行耗时:0 ms,击败了100.00% 的Go用户
- 内存消耗:2.3 MB,击败了36.36% 的Go用户