力扣每日一题 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的值,即为满足条件的相加结果相等的对数。

相关推荐
海清河晏1114 小时前
数据结构 | 单循环链表
数据结构·算法·链表
wuweijianlove8 小时前
算法性能的渐近与非渐近行为对比的技术4
算法
_dindong8 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志8 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
黎阳之光8 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_118 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia8 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
wfbcg9 小时前
每日算法练习:LeetCode 209. 长度最小的子数组 ✅
算法·leetcode·职场和发展
_日拱一卒9 小时前
LeetCode:除了自身以外数组的乘积
数据结构·算法·leetcode
计算机安禾9 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio