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

相关推荐
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
linux_carlos1 小时前
环形缓冲区
数据结构
readmancynn1 小时前
二分基本实现
数据结构·算法
萝卜兽编程1 小时前
优先级队列
c++·算法
Bucai_不才1 小时前
【数据结构】树——链式存储二叉树的基础
数据结构·二叉树
盼海1 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步2 小时前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
Rstln2 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
芜湖_3 小时前
【山大909算法题】2014-T1
算法·c·单链表
珹洺3 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode