2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。

每个数组的代价是指该数组中的第一个元素的值。

你的目标是将这个数组划分为三个连续且互不重叠的子数组。

然后,计算这三个子数组的代价之和,

要求返回这个和的最小值。

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

输出:6。

答案2024-05-22:

chatgpt

题目来自leetcode3010。

大体步骤如下:

1.初始化操作:

  • main 函数开始,创建一个整型数组 nums,其中包含 [1, 2, 3, 12]

  • 定义并调用 minimumCost 函数来计算划分成三个子数组后的最小代价之和。

2.计算最小代价:

  • minimumCost 函数中,fise 被初始化为 math.MaxInt64,表示两个最大的整数值,确保任何元素都会比它们小。

  • 对于给定的数组 nums,迭代从第二个元素开始的所有元素:

    • 如果元素 x 小于当前最小值 fi,则将第二小值 se 更新为当前最小值 fi,并更新最小值为 x

    • 否则,如果元素 x介于当前最小值 fi 和第二小值 se 之间,则更新第二小值 sex

  • 返回结果为数组第一个元素 nums[0] 与找到的两个最小值 fise 的和。

3.解问题:

  • 对于输入数组 [1, 2, 3, 12],算法将找到两个最小值为 12

  • 算法返回结果为 1 + 1 + 2 = 4,此结果表示划分三个子数组后的最小代价之和。

4.时间复杂度:

  • 迭代一次数组,需要 O(n) 的时间复杂度,其中 n 是数组的长度。

5.空间复杂度:

  • 除了输入的数组外,算法只使用了常量级别的额外空间,因此空间复杂度为 O(1)

Go完整代码如下:

  1. package main
  2. import (
  3. "fmt"
  4. "math"
  5. )
  6. func minimumCost(nums []int) int {
  7. fi, se := math.MaxInt64, math.MaxInt64
  8. for _, x := range nums[1:] {
  9. if x < fi {
  10. se = fi
  11. fi = x
  12. } else if x < se {
  13. se = x
  14. }
  15. }
  16. return nums[0] + fi + se
  17. }
  18. func main() {
  19. nums := []int{1, 2, 3, 12}
  20. result := minimumCost(nums)
  21. fmt.Println(result)
  22. }

Python完整代码如下:

  1. # -*-coding:utf-8-*-
  2. import math
  3. def minimum_cost(nums):
  4. fi, se = math.inf, math.inf
  5. for x in nums[1:]:
  6. if x < fi:
  7. se = fi
  8. fi = x
  9. elif x < se:
  10. se = x
  11. return nums[0] + fi + se
  12. def main():
  13. nums = [1, 2, 3, 12]
  14. result = minimum_cost(nums)
  15. print(result)
  16. if __name__ == "__main__":
  17. main()

2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。 每个数组的代价是指该数组中的第一个元素的值。 你的目标是将这个数组划分为三个连续且互不重叠的子数组。 然后,计算这三个子数的更多相关文章

  1. 通过PHP current()函数获取未知字符键名数组第一个元素的值

    在开发中经常遇到这样问题,获取数组第一个元素的值,如果是数字索引那还好,直接$array[0],如果键名是字符串,你又未知这个字符串呢?用current()函数就可以做到. 当然,你可以用array_ ...

  2. shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

    let a = [1, 2, 3]; let b = a.shift(); console.log(a); // [2, 3] console.log(b); // 1 返回值 从数组中删除的元素;  ...

  3. 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组

    var threeSum = function(nums) {let ans = [];const len = nums.length;if(nums == null || len < 3) r ...

  4. 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等

    题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...

  5. 计蒜客-T1271 完美K倍子数组

    如果一个数组满足长度至少是 22 ,并且其中任意两个不同的元素 A_iAi​ 和 A_j (i \not = j)Aj​(i​=j) 其和 A_i+A_jAi​+Aj​ 都是 KK 的倍数,我们就称 ...

  6. php 获取数组第一个元素 以及最后一个元素 && 最后一个元素的键名

    1. current() 函数返回数组中的当前元素的值. 每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素. end() - 将内部指针指向数组中 ...

  7. 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果

    package com.rui.test; import java.util.Random; /** * @author poseidon * @version 1.0 * @date:2015年10 ...

  8. 16.Shortest Unsorted Continuous Subarray(最短未排序子数组)

    Level:   Easy 题目描述: Given an integer array, you need to find one continuous subarray that if you onl ...

  9. C 语言学习的第 05 课:C 语言基础(01)

    C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言    程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...

  10. C语言头文件组织与包含原则

    转自:http://www.cnblogs.com/clover-toeic/p/3728026.html 说明 本文假定读者已具备基本的C编译知识. 如非特殊说明,文中“源文件”指*.c文件,“头文 ...

随机推荐

  1. Python - 字典2

    Python - 访问字典项 您可以通过在方括号内引用其键名来访问字典的项: 示例,获取 "model" 键的值: thisdict = { "brand": ...

  2. 华为Push用户增长服务:精准触达,加速增长

    速戳了解华为Push用户增长服务:通过精细化运营,助力开发者高效实现用户增长,提升用户活跃度和粘性! 合作咨询请点此链接 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移 ...

  3. HMS Core Discovery第16期直播预告|与虎墩一起,玩转AI新“声”态

    [导读] 随着人工智能不断发展,机器学习技术也开始被广泛地应用到教育.金融.零售.交通.医疗等各个领域,给我们的生活带来巨大的便利.本期Discovery直播以<与虎墩一起,玩转AI新" ...

  4. 重新点亮linux 命令树————文件权限和目录权限[九]

    前言 简单整理一下文件权限和目录权限. 正文 当打开ls -al的时候会出现相关的权限信息. 那么上面文件类型包括: 普通文件 d 目录文件 b 块特殊文件 (设备,比如u盘) c 字符特殊文件 (终 ...

  5. spring boot @propertySource @importResource @Bean [六]

    @propertySource 指定property的配置源. 创建一个person.property: 然后修改person注解; 在运行test之后,结果为: @importResource 这个 ...

  6. axiso封装

    import axios from 'axios';import {Message } from 'element-ui'//element-ui提示框组件import config from './ ...

  7. 力扣81(java&python)-搜索旋转排序数组 II(中等)

    题目: 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 ...

  8. 欢迎 Llama 3:Meta 的新一代开源大语言模型

    介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本,现已在 Hugging Face 平台发布.看到 Meta 持续致力于开放 AI 领域的发展令人振奋,我们也非常高兴地 ...

  9. 基于信通院 Serverless 工具链模型的实践:Serverless Devs

    简介: Serverless Devs 作为开源开放的开发者工具,参编中国信通院<基于无服务器架构的工具链能力要求>标准,为行业统一规范发挥助推作用!​ 作者 | 江昱(阿里云 Serve ...

  10. [FAQ] eggjs/egg 自定义 favicon.ico

      从  egg 项目配置里找到这一段代码: https://github.com/eggjs/egg/blob/master/config/config.default.js#L205C21-L20 ...