3038.相同分数的最大操作数目 I

【LetMeFly】3038.相同分数的最大操作数目 I

力扣题目链接:https://leetcode.cn/problems/maximum-number-of-operations-with-the-same-score-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[0] + nums[1]的值$(记为$val$),接着从下标$2$开始遍历数组(遍历时$i$每次+2),如果相邻两个元素之和为$val$,则答案加一且遍历继续;否则遍历结束。

  • 时间复杂度$O(len(nums))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int maxOperations(vector<int>& nums) {
int ans = 1;
int val = nums[0] + nums[1];
for (int i = 2; i + 1< nums.size(); i += 2) {
if (nums[i] + nums[i + 1] != val) {
break;
}
ans++;
}
return ans;
}
};

Go

1
2
3
4
5
6
7
8
9
10
11
12
13
// package main

func maxOperations(nums []int) int {
ans := 1
val := nums[0] + nums[1]
for i := 2; i < len(nums)-1; i += 2 {
if nums[i]+nums[i+1] != val {
break
}
ans++
}
return ans
}

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int maxOperations(int[] nums) {
int ans = 1;
int val = nums[0] + nums[1];
for (int i = 2; i < nums.length - 1; i += 2) {
if (nums[i] + nums[i + 1] != val) {
break;
}
ans++;
}
return ans;
}
}

Python

1
2
3
4
5
6
7
8
9
10
11
# from typing import List

class Solution:
def maxOperations(self, nums: List[int]) -> int:
ans = 1
val = nums[0] + nums[1]
for i in range(2, len(nums) - 1, 2):
if nums[i] + nums[i + 1] != val:
break
ans += 1
return ans

End

这是在486/1920(px)宽度屏幕下写的题解。这是为什么呢?

1
5LuK5aSp5byA5aeL56uv5Y2I5pS+5YGH77yM5LqO5piv5bCx5pyJ5LqG5piO5pel6KaB5a6M5oiQ55qE56CU56m2546w54q25ZKM5LiL5LiL5ZGo5LqM6KaB5a6M5oiQ55qE5oqA5pyv6Lev57q/44CC44GE44GE44KT44GY44KD44Gq44GE44GLRG9nZSjotoXlpKfniYgpCg==

还是白色背景的VsCode和Word比较像。

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139535702


3038.相同分数的最大操作数目 I
https://blog.letmefly.xyz/2024/06/07/LeetCode 3038.相同分数的最大操作数目I/
作者
Tisfy
发布于
2024年6月7日
许可协议