力扣每日一题 6/7

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

题目分析:

这道题主要还是遍历+模拟+数组 ,题目要求前两个数字的和相等,那我们就可以储存刚开始的前两个值,去依次遍历后面的两个的值,然后求和判等,只要有不等的情况直接跳出循环,return结果即可。需要注意的是,这里循环开始前需要特殊情况判别,当长度等于1的时候直接return 0,等于2的时候直接return 1 ,否则的话进行下面的循环。下面是具体代码实现:

python 复制代码
class Solution:
    def maxOperations(self, nums: List[int]) -> int:
        n=len(nums)
        if n<2: return 0
        if n==2: return 1
        s=1
        key=nums[1]+nums[0]
        i=2
        while i<(n-1):
            if key==(nums[i]+nums[i+1]):
                s+=1
                i+=2
            else: break
        return s 

总结:

这段代码是一个用于计算数组中连续两个数相加结果相等的个数的解法。

  • 首先判断输入数组的长度,如果长度小于2,则直接返回0;如果长度等于2,则返回1。这是为了满足特殊情况的处理。

  • 然后,定义变量s为计数器,初始化为1,表示目前已找到的满足条件的相加结果相等的对数。定义变量key为nums[0]和nums[1]的和,即初始要比较的值。

  • 接着使用while循环遍历数组,从第三个元素(nums[2])开始,每次比较当前元素与下一个元素的和是否等于key值,如果相等,则计数器s加1,继续比较下一对元素;如果不相等,则跳出循环。

  • 最后返回计数器s的值,即为满足条件的相加结果相等的对数。

相关推荐
独自破碎E10 分钟前
【总和拆分 + 双变量遍历】LCR_012_寻找数组的中心下标
数据结构·算法
WBluuue10 分钟前
Codeforces 1076 Div3(ABCDEFG)
c++·算法
u01092727121 分钟前
模板编译期排序算法
开发语言·c++·算法
GIS瞧葩菜30 分钟前
Cesium 轴拖拽 + 旋转圈拖拽 核心数学知识
人工智能·算法·机器学习
m0_6860416137 分钟前
C++中的适配器模式变体
开发语言·c++·算法
txzrxz37 分钟前
结构体排序,双指针,单调栈
数据结构·算法·双指针算法·单调栈·结构体排序
AndrewHZ41 分钟前
【AI黑话日日新】什么是AI智能体?
人工智能·算法·语言模型·大模型·llm·ai智能体
wWYy.42 分钟前
算法:二叉树最大路径和
数据结构·算法
葱明撅腚44 分钟前
利用Python挖掘城市数据
python·算法·gis·聚类
We་ct1 小时前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表