2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。 每个数组的代价是指该数组中的第一个元素的值。 你的目标是将这个数组划分为三个连续且互不重叠的子数组。 然后,计算这三个子数
2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。
每个数组的代价是指该数组中的第一个元素的值。
你的目标是将这个数组划分为三个连续且互不重叠的子数组。
然后,计算这三个子数组的代价之和,
要求返回这个和的最小值。
输入:nums = [1,2,3,12]。
输出:6。
答案2024-05-22:
题目来自leetcode3010。
大体步骤如下:
1.初始化操作:
从
main
函数开始,创建一个整型数组nums
,其中包含[1, 2, 3, 12]
。定义并调用
minimumCost
函数来计算划分成三个子数组后的最小代价之和。
2.计算最小代价:
在
minimumCost
函数中,fi
和se
被初始化为math.MaxInt64
,表示两个最大的整数值,确保任何元素都会比它们小。对于给定的数组
nums
,迭代从第二个元素开始的所有元素:如果元素
x
小于当前最小值fi
,则将第二小值se
更新为当前最小值fi
,并更新最小值为x
。否则,如果元素
x
介于当前最小值fi
和第二小值se
之间,则更新第二小值se
为x
。
返回结果为数组第一个元素
nums[0]
与找到的两个最小值fi
和se
的和。
3.解问题:
对于输入数组
[1, 2, 3, 12]
,算法将找到两个最小值为1
和2
。算法返回结果为
1 + 1 + 2 = 4
,此结果表示划分三个子数组后的最小代价之和。
4.时间复杂度:
- 迭代一次数组,需要
O(n)
的时间复杂度,其中n
是数组的长度。
5.空间复杂度:
- 除了输入的数组外,算法只使用了常量级别的额外空间,因此空间复杂度为
O(1)
。
Go完整代码如下:
package main
import (
"fmt"
"math"
)
func minimumCost(nums []int) int {
fi, se := math.MaxInt64, math.MaxInt64
for _, x := range nums[1:] {
if x < fi {
se = fi
fi = x
} else if x < se {
se = x
}
}
return nums[0] + fi + se
}
func main() {
nums := []int{1, 2, 3, 12}
result := minimumCost(nums)
fmt.Println(result)
}
Python完整代码如下:
# -*-coding:utf-8-*-
import math
def minimum_cost(nums):
fi, se = math.inf, math.inf
for x in nums[1:]:
if x < fi:
se = fi
fi = x
elif x < se:
se = x
return nums[0] + fi + se
def main():
nums = [1, 2, 3, 12]
result = minimum_cost(nums)
print(result)
if __name__ == "__main__":
main()
2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。 每个数组的代价是指该数组中的第一个元素的值。 你的目标是将这个数组划分为三个连续且互不重叠的子数组。 然后,计算这三个子数的更多相关文章
- 通过PHP current()函数获取未知字符键名数组第一个元素的值
在开发中经常遇到这样问题,获取数组第一个元素的值,如果是数字索引那还好,直接$array[0],如果键名是字符串,你又未知这个字符串呢?用current()函数就可以做到. 当然,你可以用array_ ...
- shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
let a = [1, 2, 3]; let b = a.shift(); console.log(a); // [2, 3] console.log(b); // 1 返回值 从数组中删除的元素; ...
- 给你一个包含 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 ...
- 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...
- 计蒜客-T1271 完美K倍子数组
如果一个数组满足长度至少是 22 ,并且其中任意两个不同的元素 A_iAi 和 A_j (i \not = j)Aj(i=j) 其和 A_i+A_jAi+Aj 都是 KK 的倍数,我们就称 ...
- php 获取数组第一个元素 以及最后一个元素 && 最后一个元素的键名
1. current() 函数返回数组中的当前元素的值. 每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素. end() - 将内部指针指向数组中 ...
- 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果
package com.rui.test; import java.util.Random; /** * @author poseidon * @version 1.0 * @date:2015年10 ...
- 16.Shortest Unsorted Continuous Subarray(最短未排序子数组)
Level: Easy 题目描述: Given an integer array, you need to find one continuous subarray that if you onl ...
- C 语言学习的第 05 课:C 语言基础(01)
C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言 程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...
- C语言头文件组织与包含原则
转自:http://www.cnblogs.com/clover-toeic/p/3728026.html 说明 本文假定读者已具备基本的C编译知识. 如非特殊说明,文中“源文件”指*.c文件,“头文 ...
随机推荐
- Qt 5.12.10 国际化
网上有资料但是不全,所以这里记录一份比较全的 1.创建项目 2.编辑 demo.cpp 这里写button用来做国际化示例,运行软件后是这个样子 #include "demo.h" ...
- 实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking
实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking 论文url https://arxiv.org/abs/2003.11753 论文简述: ...
- JavaScript 迈入 AI 新纪元
随着人工智能技术的不断进步,JavaScript 也迎来了自己的 AI 时代. JS-Torch 是一个全新的深度学习库,专为 JavaScript 设计,其语法习惯与广受欢迎的 PyTorch 框架 ...
- HarmonyOS 3百机升级计划,来了!
HarmonyOS 3规模升级来了! 为大家奉上百余款机型升级计划! 你的手机什么时候可以升级? 赶快下滑查看!
- redis 简单整理——发布与订阅[十四]
前言 简单介绍一下redis的发布与订阅. 正文 Redis提供了基于"发布/订阅"模式的消息机制,此种模式下,消息发布 者和订阅者不进行直接通信,发布者客户端向指定的频道(cha ...
- 转载(localStorage设置过期时间)
转载地址:https://blog.csdn.net/zhaoxiang66/article/details/86703438 class Storage{ constructor(name){ th ...
- react 框架(antd)的使用方法
脚手架 安装 npm install -g create-react-app 引入: import React, { Component } from "react"; im ...
- 力扣138(java)- 复制带随机指针的链表(中等)
题目: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点. 构造这个链表的 深拷贝. 深拷贝应该正好由 n 个 全新 节点组成,其 ...
- 浅谈分布式一致性:Raft 与 SOFAJRaft
简介: SOFAJRaft已开源 作者 | 家纯来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致: ...
- WPF 字体 FontStyle 的 Italic 和 Oblique 的区别
本文介绍在 WPF 里面的字体属性 FontStyle 的 Italic 和 Oblique 的斜体差别 本文的图片和知识来自: #265 – Specifying Values for FontSt ...