2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选

news/2024/11/15 22:16:16/文章来源:https://www.cnblogs.com/moonfdd/p/18396722

2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。

在筛选过程中,每轮选择一个孩子时,所有尚未选中的孩子的幸福值都会减少 1。需要注意的是,幸福值不能降低到负数,只有在其为正数时才能减少。

我们的目标是尽可能使选中的k个孩子的幸福值之和最大化。

输入:happiness = [1,2,3], k = 2。

输出:4。

解释:按以下方式选择 2 个孩子:

1.选择幸福值为 3 的孩子。剩余孩子的幸福值变为 [0,1] 。

2.选择幸福值为 1 的孩子。剩余孩子的幸福值变为 [0] 。注意幸福值不能小于 0 。

所选孩子的幸福值之和为 3 + 1 = 4 。

答案2024-09-04:

chatgpt

题目来自leetcode3075。

大体步骤如下:

1.对孩子的幸福值数组 happiness 进行降序排序。

2.从排序后的数组中选择前 k 个幸福值最高的孩子。这些孩子的幸福值之和即为所求。

3.在选出的 k 个孩子中,逐个孩子判断幸福值是否大于等于当前所在位置的索引值,如果是,将幸福值与当前索引值相减,并累加到最终的结果中,表示该孩子的贡献幸福值。

4.最终返回累加的结果作为最大化幸福值之和的输出。

时间复杂度分析:

  • 排序的时间复杂度为 O(n*log(n)),n 为孩子的数量。

  • 选 k 个孩子时,需要遍历最多 k 个元素,时间复杂度为 O(k)。

  • 因此,总的时间复杂度为 O(n*log(n) + k)。

空间复杂度分析:

  • 需要常量级别的额外空间来进行计算,因此总的额外空间复杂度可以看作是 O(1)。

Go完整代码如下:

package mainimport ("fmt""slices"
)func maximumHappinessSum(happiness []int, k int) (ans int64) {slices.SortFunc(happiness, func(a, b int) int { return b - a })for i, x := range happiness[:k] {if x <= i {break}ans += int64(x - i)}return
}func main() {happiness := []int{1, 2, 3}k := 2fmt.Println(maximumHappinessSum(happiness, k))}

在这里插入图片描述

Rust完整代码如下:

fn maximum_happiness_sum(happiness: &mut Vec<i32>, k: usize) -> i64 {happiness.sort_by(|a, b| b.cmp(a));let mut ans: i64 = 0;for (i, &x) in happiness.iter().take(k).enumerate() {if x <= i as i32 {break;}ans += x as i64 - i as i64;}ans
}fn main() {let mut happiness = vec![1, 2, 3];let k = 2;println!("{}", maximum_happiness_sum(&mut happiness, k));
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792162.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初探编译链接原理

这篇博文由一个 bug 引出了编译链接的整个过程。我们可以看到一个源代码文件最终变成一个可执行文件中间经历了编译和链接两个过程,编译过程又分为预编译,编译,和汇编;预编译阶段主要处理#开头的代码,编译则是进行一些语法分析和优化,最终生成汇编代码,而汇编则是生成机…

canvas版本的五子棋

代码:<!Doctype html> <html lang="zh_cn"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>五子棋</title><meta name="Keywords" content="&quo…

vue router路径重复时报错

参考——  https://blog.csdn.net/zz00008888/article/details/119566375 报错: Avoided redundant navigation to current location: "/Eee". NavigationDuplicated: Avoided redundant navigation to current location: "/Eee".在router的index下添加…

CUDA Toolkit常见安装问题一览

CUDA Toolkit常见安装问题一览关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认证的资深架构师,上亿营收AI产品…

如何从Docker镜像中提取恶意文件

原创 Bypass当发生容器安全事件时,需要从容器或镜像中提取恶意文件进行分析和处理。 本文主要介绍3种常见的方法: (1) 从运行的容器中复制文件 首先,需要从镜像运行启动一个容器,然后,使用docker cp命令从容器中提取文件到宿主机。 docker run -d --name test test:v1.0 …

网站内容页无法访问!内页无法正常访问

内页无法正常访问原因:通常是因为伪静态设置不正确。 解决方法:检查伪静态规则是否正确配置。 确认服务器是否开启了rewrite模块。 生成正确的.htaccess文件,并放置在根目录下。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、H…

PHP配置文件(php.ini)中上传文件大小限制怎么调整

上传文件大小限制原因:PHP配置文件(php.ini)中上传文件大小限制过小。 解决方法:修改php.ini文件中的upload_max_filesize和post_max_size。iniupload_max_filesize = 20M post_max_size = 20M扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精…

pbootcms用户账号或密码错误,数据库中用户信息缺失怎么办?网站常见报错解决方案

用户登录问题原因:用户账号或密码错误,数据库中用户信息缺失。 解决方法:检查用户账号和密码是否正确。 确认数据库中用户信息完整。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、…

pbootcms上传文件大小限制怎么办?网站常见报错解决方案

原因:PHP配置文件(php.ini)中上传文件大小限制过小。 解决方法:修改php.ini文件中的upload_max_filesize和post_max_size。upload_max_filesize = 20M post_max_size = 20M扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5…

pbootcms空白页面或500错误怎么办?网站常见报错解决方案

空白页面或500错误原因:可能是PHP错误被隐藏了,或者是某些脚本导致的错误。 解决方法:开启PHP错误报告,查看具体的错误信息。error_reporting(E_ALL); ini_set(display_errors, On);检查最近修改过的文件或上传的新文件。扫码添加技术【解决问题】专注中小企业网站建设、网…

处理问题:Diffie-Hellman Ephemeral Key Exchange DoS Vulnerability (SSH, D(HE)ater)

请在修改前多开几个 ssh 连接或打开 telnet 连接,以免修改失误导致无法远程! 查看 ssh 版本,确保最新ssh -V 查看 ssh 文档,确认支持的算法man sshd_config |grep -A 40 -w KexAlgorithms或者使用命令查询: ssh -Q KexAlgorithms 收集算法列表,将以 diffie-hellman- 开头…