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

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

时间:2024-09-04 16:02:48浏览次数:10  
标签:幸福 04 孩子 复杂度 09 go happiness

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 main

import (
	"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 := 2
	fmt.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));
}

在这里插入图片描述

标签:幸福,04,孩子,复杂度,09,go,happiness
From: https://www.cnblogs.com/moonfdd/p/18396722

相关文章

  • Go 语言 nil 和接口
    如果你来自其他编程语言,开始学习Go编程,那么你很可能会遇到一个既独特又有些令人费解的现象:那就是在Go语言中,接口和nil指针之间的关系与其他语言大不相同。具体来说,在许多编程语言中,当一个接口或对象引用为nil(或null)时,它通常被认为是不存在或无效的。但在Go语言中,即使一个......
  • macOS 将google-chrome命令直接映射到谷歌浏览器的可执行文件上。可以像在Ubuntu上一
     创建符号链接找到谷歌浏览器的可执行文件:在macOS中,应用程序通常位于/Applications目录下,并且它们的可执行文件隐藏在.app包中。谷歌浏览器的可执行文件路径是:bash复制代码/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome创建符号链接:你可以在终端......
  • XTransfer技术专家亮相2024MongoDB中国用户大会
    近日,2024MongoDB中国用户大会上海站顺利举办,XTransfer 技术专家、ApacheFlinkCommitter孙家宝受邀参加本次大会,并以“ApacheFlink连接 MongoDB 助力流式计算”为主题进行演讲。本次演讲简要介绍 ApacheFlink流式计算引擎,ApacheFlinkCDC流式数据集成框架,并重点探讨......
  • Vgo-适合golang初学者的开源框架
    Vgo介绍......
  • Golang当中的定时器
     参考:https://blog.csdn.net/qq_56999918/article/details/130499688 1packagemain23import(4"fmt"5"time"6)78funcTimer_stop(t*time.Timer){9ifnil!=t{10t.Stop()11}12......
  • django前后端不分离项目中ajax与csrf问题,加入这个js文件(亲测有效)
    functiongetCookie(name){letcookieValue=null;if(document.cookie&&document.cookie!==''){constcookies=document.cookie.split(';');for(leti=0;i<cookies.length;i++){constcookie=cookies[i].trim();//......
  • django Form组件校验流程
    django中Form组件字段校验顺序:先字段内部校验,然后钩子方法校验:fromdjango.shortcutsimportrender,redirectfromdjango.core.validatorsimportRegexValidatorfromdjangoimportformsfromapp01.utilss.mdyimportmdfromapp01.modelsimportAdministrator,Custom......
  • MongoDB 从4.4到7.0各个版本特性概览
    速览本文将从以下方面介绍数据库MongoDB4.4、5.0、6.0、7.0版本:MongoDB4.4新特性隐藏索引(HiddenIndexes)重定义分片键(RefinableShardKeys)复合哈希分片键(CompoundHashedShardKeys)对冲读(HedgedReads)同步建索引(SimultaneousIndexing)复制读请求(MirroredReads)基于时间保留Opl......
  • Study Plan For Algorithms - Part20
    1.组合总和题目链接:https://leetcode.cn/problems/combination-sum/给定一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。classSolution:defcombinationSum(self,ca......
  • ‍️ SpringBoot中MongoDB的骚操作用法
    不知道大家在工作项目中有没有使用MongoDB,在哪些场景中使用。MongoDB作为NoSQL数据库,不像SQL数据库那样,可以使用Mybatis框架。如果需要在SpringBoot中使用MongoDB的话,我目前知道有三种方式,第一种是直接使用MongoDB官方的SDK,第二种是使用SpringJpa的方式,第三种是使用MongoTemplate......