【刷题日记】1282. 用户分组

简介: 【刷题日记】1282. 用户分组

本次刷题日记的第 90 篇,力扣题为:1282. 用户分组

一、题目描述:

咱今天不买彩票了,被套牢了,我们来给用户分一下组

image.png

二、这道题考察了什么思想?你的思路是什么?

题目的要求相对明确,就是需要我们给用户按照规则来进行分组,但是分组的规则咱们需要仔细瞅瞅

  • 本题给出的 groupSizes 数组,数组的索引表示人的编号,数组的值表示人所属组的大小
  • 这里需要注意,1 个人只能出现在 1个组中
  • 题目要求我们按照组的大小和人的编号进行划分和分组

分析

其实在看这个题的时候,有点晕,不知道题目是要我们做些啥,但是仔细去查看题目的用意以及题目给出数组表示的含义之后,其实题目处理起来还是比较简单的

简单来说,第一,我们需要知道某一个 size 的组,他会对应多少人,第二,我们需要根据这个对应关系来进行拆分组就可以了

例如

开发组对应的有 6 个编号对应的人

a b c d e f

但是他们对应的组需要拆分成 size 为 3 的组

那么就会有这种情况的拆分

开发组1 a b c
开发组2 d e f

那么对应到今天的题,我们就知道,咱们把同一个 size 的组对应的人先确认清楚,然后再来按照 size 来划分人就可以了,这很简单明确吧

按照题目中的示例 1 来进行推演:

groupSizes:

3 3 3 3 3 1 3

我们按照 size 来关联人,就可以得到这样的结果

Size 为 3 0 1 2 3 4 6
Size 为 1 5

那这个时候,我们按照 size 来拆分人就可以很简单的得出结果了

size为 3 的 1组 0 1 2
Size 为 3 的 2组 3 4 6
Size 为 1 5

按照上面这个思路,相信我们编码就是很容易的事情了吧,一起来撸代码吧

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码

  • 先关联 size 和人
  • 再来拆分人

编码如下:

func groupThePeople(groupSizes []int) [][]int {
    // 将组的大小 和 对应的人关联上关系
    grps := map[int][]int{}
    for person, size := range groupSizes {
        grps[size] = append(grps[size], person)
    }
    // 根据关系 grps 来将人分组
    res := [][]int{}
    for size,people := range grps {
        for i:=0; i<len(people); i+=size {
            res = append(res, people[i:i+size])
        }
    }
    return res
}

四、总结:

image.png

咱们这种实现方式的话,可以看到我们遍历了一次题目给出的源数组 groupSizes ,具体实现中,还可以看到我们使用了两个 for 循环来遍历我们自己构造的 grps 实际上仔细的兄弟就可以看出来实际上,时间复杂度还是去解决第一个循环的逻辑,即为 O(n) ,实际上都是去遍历一遍题目给出的 groupSizes

空间复杂度则是最大为 O(n) ,咱们使用的哈希表的方式,需要开辟相应元素对应的空间

原题地址:1282. 用户分组

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
1天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1069 0
|
10天前
|
人工智能 运维 安全
|
1天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
256 0
|
8天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
9天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
748 23