首页 > 其他分享 >2024-07-17:用go语言,给定一个整数数组nums, 我们可以重复执行以下操作: 选择数组中的前两个元素并删除它们, 每次操作得到的分数是被删除元素的和。 在保持所有操作的分数相同的前提下,

2024-07-17:用go语言,给定一个整数数组nums, 我们可以重复执行以下操作: 选择数组中的前两个元素并删除它们, 每次操作得到的分数是被删除元素的和。 在保持所有操作的分数相同的前提下,

时间:2024-07-17 15:18:29浏览次数:8  
标签:分数 删除 nums 元素 数组 操作

2024-07-17:用go语言,给定一个整数数组nums,

我们可以重复执行以下操作:

选择数组中的前两个元素并删除它们,

每次操作得到的分数是被删除元素的和。

在保持所有操作的分数相同的前提下,

请计算最多能执行多少次操作。

返回可以进行的最大操作次数。

输入:nums = [3,2,1,4,5]。

输出:2。

解释:我们执行以下操作:

1.删除前两个元素,分数为 3 + 2 = 5 ,nums = [1,4,5] 。

2.删除前两个元素,分数为 1 + 4 = 5 ,nums = [5] 。

由于只剩下 1 个元素,我们无法继续进行任何操作。

答案2024-07-17:

chatgpt

题目来自leetcode3038。

大体步骤如下:

1.初始化变量:设定初始索引 i 为 1、t(操作次数)为 0。

2.循环直至结束条件:进行循环,每次增加 2 然后检查是否满足条件以继续操作。

3.检查是否能继续操作:检查当前两个元素与第一次删除的两个元素之和是否相等,如果不相等,则退出循环。

4.更新操作次数:如果满足条件,增加操作次数 t。

5.返回最大操作次数:最终返回 t 作为最大操作次数。

总的时间复杂度是 O(n),其中 n 是 nums 数组的长度。因为我们只需要遍历一次整个数组,执行的操作是固定的,不会随着数组变大而增加时间复杂度。

总的额外空间复杂度是 O(1),因为除了用于存储输入参数 nums 外,我们只使用了固定数量的变量(如 n、t、i)来计算最大操作次数,不随着输入的变化而增加额外的空间。

Go完整代码如下:

package main

import (
	"fmt"
)

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

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-

def maxOperations(nums):
    n, t = len(nums), 0
    for i in range(1, n, 2):
        if nums[i] + nums[i - 1] != nums[1] + nums[0]:
            break
        t += 1
    return t

def main():
    nums = [3, 2, 1, 4, 5]
    print(maxOperations(nums))

if __name__ == "__main__":
    main()

在这里插入图片描述

标签:分数,删除,nums,元素,数组,操作
From: https://www.cnblogs.com/moonfdd/p/18307469

相关文章

  • DevOps系列七(Jenkins实现基础CD操作)
    一、Jenkins实现基础CD操作1.1Jenkins配置参数化构建1.2添加一个标签1.3指定代码版本在打包之前加上一个命令将代码版本切换到制定的位置gitcheckout$tag应用并保存。1.4仓库代码打标签改动提交代码后,再创建一个tag,此时,我们就有两个tag了1.5构建回到jenkins......
  • Excel导出操作
    一、定义@Excel注解,将实体属性映射成excel对应的单元格表头、属性为导出列表的属性名称@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public@interfaceExcel{/***导出时在excel中排序*/publicintsort()defaultInteger.MAX_VALUE;/***导出到E......
  • DevOps系列六(Jenkins实现基础CI操作)
    一、Jenkins实现基础CI操作1.1通过IDEA创建一个Springboot项目packagecom.example.mytest.controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassTestCont......
  • Java开发手册中为什么要求集合转数组toArray时禁止使用无参方法,而使用传参长度为0的空
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。阿里巴巴《java开发手册》泰山版关于集合转数组时规范声明:【强制】使⽤集合转数组的⽅......
  • 2024go语言micro框架搭建踩坑解决(go版本: 1.22.5, 操作系统: ubuntu24.04, 感觉坑和
    在这两天准备学习go语言微服务相关东西时要使用micro框架,因为看的视频是用的低版本go编译器和GOPATH,使用的是旧版本的micro框架,因为找不到和视频对应的框架版本,下载了半天跑不动网上一搜全是22,21甚至更早的搭建micro的文档,很到东西现在不适应了(比如"github.com/golang/pr......
  • 详细解析Kafaka Streams中各个DSL操作符的用法
    什么是DSL?在KafkaStreams中,DSL(DomainSpecificLanguage)指的是一组专门用于处理Kafka中数据流的高级抽象和操作符。这些操作符以声明性的方式定义了数据流的转换、聚合、连接等处理逻辑,使得开发者可以更加专注于业务逻辑的实现,而不是底层的数据流处理细节。KafkaStreams......
  • 操作日志记录方法实现
    一、首先定义一个Log注解,需要标明操作的title、业务类型、功能、操作人类别、是否保留请求参数@Target({ElementType.PARAMETER,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceLog{/***模块*/publicStringtitle()defaul......
  • 数组是缓存对齐的特征
    Anarrayiscache-aligned:Thesizeofeacharrayelementmatchesthesizeofthecacheblock.Thestartingaddressofthearrayisamultipleofthecacheblocksize.Let'selaborateonthesepoints:ArrayElementSizeMatchesCacheBlockSizeI......
  • C#中implicit 关键字的使用:隐式转换操作符
    在C#中,implicit 关键字用于定义隐式转换操作符。隐式转换操作符允许自动将一种数据类型转换为另一种类型,而无需显式地调用转换方法或进行类型转换。下面将详细介绍 implicit 关键字的定义和使用。1.隐式转换操作符定义隐式转换操作符可以定义在一个类或结构体中,使得该......
  • java的数组
    程序=逻辑+数据,数组是存储数据的强而有力的手段。——闫学灿一维数组数组的定义//int[]a;//定义//a=newint[10];//初始化int[]a=newint[10],b;//边定义边初始化,b也是数组,但是没有初始化,是一个空数组float[]f=newfloa......