专栏首页算法与编程之美Python|力扣166周第二题用户分组题

Python|力扣166周第二题用户分组题

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

有 n 位用户参加活动,他们的 ID 从 0 到 n - 1,每位用户都恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes,其中包含每位用户所处的用户组的大小,请你返回用户分组情况(存在的用户组以及每个组中用户的 ID)。 你可以任何顺序返回解决方案,ID 的顺序也不受限制。此外,题目给出的数据保证至少存在一种解决方案。

示例 1:

输入:groupSizes = [3,3,3,3,3,1,3]

输出:[[5],[0,1,2],[3,4,6]]

解释:

其他可能的解决方案有 [[2,1,6],[5],[0,4,3]] 和[[5],[0,6,2],[4,3,1]]。

示例 2:

输入:groupSizes = [2,1,3,3,3,2]

输出:[[1],[0,5],[2,3,4]]

提示:groupSizes.length == n

1 <= n <= 500

1 <= groupSizes[i] <= n

解决方案

观察该题我们可得:输出的是groupSizes的值所对应改值的长度的列表;所以,该题我想到的解决方案是新建两个列表,将满足条件的数通过列表切割将其放入其中的一个新建列表之中,然后再利用切割的方式将新建列表中的代码取出来放入另一个新建列表之中,不过要注意一些其中的条件。

代码示例:

groupSizes=input()

groupSizes=list(eval(groupSizes))

n=[]

for i in range(len(groupSizes)):

    if groupSizes[i] not in groupSizes[:i]:

        s=[]

        for k in range(i,len(groupSizes)):

            if groupSizes[i]==groupSizes[k]:

                s.append(k)

                if len(s)%groupSizes[i]==0:

                    n.append(s[-groupSizes[i]:])

                continue

            if groupSizes[i]==1 and i==k:

                s.append(i)

                n.append(s[-1:])

                break 

print(n)

该代码中的两个列表分别为s[]和n[],s[]就是用来装入满足条件的元素,而n[]列表则是用来将满足条件的元素以列表的形式装入,最后输出正确的格式。

结语

对于该题的上手有一些难度,不过这是一个提升的好方法。该题我采用了列表的方法来解决,可能会有些繁琐,但对于更好的掌握列表来解决问题会更有帮助。

参考文献

力扣(LeetCode)

本文分享自微信公众号 - 算法与编程之美(algo_coding),作者:王卓越

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python|While循环和For循环

    pass是空语句,它的出现是为了保持程序结构的完整性。pass不做任何事情,一般用作占位符。

    算法与编程之美
  • 开发|Springboot文件上传与下载

    我们在做项目的时候很多时候会涉及到操作文件的步骤,今天我们就来讲讲如何实现Springboot文件上传与下载。

    算法与编程之美
  • laya核心API五分钟速记

    大部分的laya UI组件都可以看做节点,可以看做web开发中,使用JavaScript对html节点进行操作。

    算法与编程之美
  • Python的编码问题(一)

    一、什么是编码   可以说,计算机是一个即聪明又笨蛋的家伙。说它聪明,是因为他可以做很多事情,它的强大无需多说,大家应该都有所了解以及感受。但是为什么说它又是个...

    人生不如戏
  • 硬核干货:一位菜鸟码农的架构师“封神”之路!

    不久前,高级架构师 Justin Miller 在 GitHub 上创建项目,介绍自己关于如何成为更好的软件架构师的想法。该项目发布一天即获得 1.4K sta...

    江南一点雨
  • 架构随想录

    昨天在一次和别人讨论架构时,看到架构被抽象化,神秘化,甚至郑智化,心中有些不爽,便忍不住吐槽了几句: "Architecture, in my opinion,...

    tyrchen
  • Flink集群部署

    上一节我们讲了单机模式如何部署启动,这节我们基于CentOS 7虚拟机搭建一个3个节点的集群:

    王知无
  • 解决Android SDK Manager不能更新的问题

    今天打算更新到Android4.3,看看里面的新的API,DOC什么的,但是打开Android SDK Manager后发现不能更新,fetching更新配置文...

    飞雪无情
  • Tool之Target Server(vx5)

    在《Tool之TargetServer(vx6)》里介绍了Workbench下如何启动TargetServer来连接WDB,今天看看Tornado里的操作

    Taishan3721
  • ABB机器人本体与控制柜介绍

    利用Robotstudio软件进行的六轴单轴运动演示 ?

    EdenChen

扫码关注云+社区

领取腾讯云代金券