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

相关推荐
前端炒粉13 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js
断剑zou天涯15 小时前
【算法笔记】窗口内最大值或最小值的更新结构
java·笔记·算法
smj2302_7968265215 小时前
解决leetcode第3753题范围内总波动值II
python·算法·leetcode
骑着猪去兜风.17 小时前
线段树(二)
数据结构·算法
fengfuyao98518 小时前
竞争性自适应重加权算法(CARS)的MATLAB实现
算法
散峰而望18 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
leoufung18 小时前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
靠沿18 小时前
Java数据结构初阶——Collection、List的介绍与ArrayList
java·数据结构·list
wyhwust19 小时前
交换排序法&冒泡排序法& 选择排序法&插入排序的算法步骤
数据结构·算法·排序算法
利刃大大19 小时前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包