Organizing Containers of Balls
题目
David has several containers, each with a number of balls in it. He has just enough containers to sort each type of ball he has into its own container. David wants to sort the balls using his sort method.
附上链接:Organizing Containers of Balls
写在前面
这种题一般我自己搞下来就是很懵的,因为它逻辑相对不清晰,没办法让人很快想清楚该用什么样的方法解决它。
所以我一般都会有个似乎对的思路就往下做,最后报error了再返回找逻辑上的错误,这就导致我经常需要全部从头来过。。。本题基本就是这样
解题思路
我错误的想法就不多说了,直接从正确的开始~
首先我们要明确一点,因为交换时拿走m个球就要拿回来m个球,所以每个容器中球的个数始终是不变
最终要实现在任意次交换后实现每个容器中只放一种类型的球,那么容易得到每种类型的球的数量是与最终放置它们的那个容器中的球数一致的(废话)
也就是说每种类型的球的数量是与每个容器初始的球数一致的
这样思路就很清晰了,我们只要把每种球的数量算出来,每个容器的初始球数算出来,若能相匹配,则可以实现交换;否则不能实现交换。
代码实现
传入的container参数是一个二维列表,每行代表这一容器中各类型球的数量,每列则代表着一种类型的球在各个容器中的分布
这样一说事情就很清晰了,只需要对行列分别求和就能得到上面分析中我们所需要的东西
这里的求和我也是经过查找资料发现,只要经过两层循环就可以实现。这里我之前用的三层循环实现的,感觉很累赘,就查了一下资料,发现果然是可以化简的,而且化简方式还很棒(新手,大佬勿喷),让我深深地感受到了代码的魅力
实现如下
mr = []
mc = []
for i in range(len(container)):
mr.append(sum(container[i]))
tot = 0
for j in range(len(container)):
tot += container[j][i]
mc.append(tot)
就这样,就把两组需要的数值存进了两个列表中
接下来,只要对两个数组进行排序,进行比较就完成了
最终程序
def organizingContainers(container):
mr = []
mc = []
for i in range(len(container)):
mr.append(sum(container[i]))
tot = 0
for j in range(len(container)):
tot += container[j][i]
mc.append(tot)
mr.sort()
mc.sort()
if mr == mc:
return 'Possible'
else:
return 'Impossible'
Organizing Containers of Balls的更多相关文章
- 〈一〉ElasticSearch的介绍
目录 什么是ElasticSearch 核心能力 ES的搜索核心 搜索引擎选择 搜索的处理 补充: 小节总结: 基本学习环境搭建 如何操作ElasticSearch 下载.安装和运行(Based Wi ...
- IBM Bluemix体验:Containers持久存储
上一篇介绍了在Bluemix Containers服务中使用docker hub镜像和container的高可用配置.接下来我们尝试如何在容器中使用持久存储. 在Bluemix的Containers服 ...
- IBM Bluemix体验:Containers进阶
上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务.除了自定义镜像之外,Bluemix Containers还可以使用Do ...
- IBM Bluemix体验:Containers
国际版的Bluemix目前有三个region,US South,United Kingdom和Sydney.其中US South是功能最全的,UK其次,Sydney功能最少.Containers服务在 ...
- Codeforces554 C Kyoya and Colored Balls
C. Kyoya and Colored Balls Time Limit: 2000ms Memory Limit: 262144KB 64-bit integer IO format: %I64d ...
- 13 Balls Problem
今天讨论的是称球问题. No.3 13 balls problem You are given 13 balls. The odd ball may be either heavier or ligh ...
- Docker-2:network containers
docker run -d -P --name web training/webapp python app.py # -name means give the to-be-run container ...
- Containers Reserved yarn resourcemanager
yarn rm的管理页面中显示了集群的概况,其中有一个指标叫Containers Reserved . 预留的容器,为什么会预留,集群的资源使用饱合,新的app请求的资源一般会进入pending状态, ...
- Docker Network containers
Network containers Estimated reading time: 5 minutes If you are working your way through the user gu ...
随机推荐
- shell awk匹配字符串(从配置文件)
配置文件 config.properties xxx_yyy_lib_path="路径" xxx_yyy_bin_path="路径" 想通过shell来读入路径 ...
- python作业/练习/实战:1、简单登录脚本
作业要求 写一个登陆的小程序 username = xiaoming passwd = 123456 1.输入账号密码,输入正确就登陆成功, 提示:欢迎xxxx登陆,今天的日期是xxx. 2.输入错误 ...
- 打开myeclipse出现这个错是为什么
- Linux下多线程pthread内存泄露
目标文件:/proc/<pid>/maps 若其中出现了大量的8K左右的内存碎片,则说明出现了内存泄露.同理,如果相应pid进程的maps文件中出现了很多内存碎片,也说明出现了内存泄露. ...
- python之求字典最值
本例子求字典最小值 首先字典分为键和值 eg: {键:值} prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, ...
- SpringMVC 与axis2 的整合(服务器端)
1,新建一个web project项目,项目的目录 如下: 2,导入需要的jar包,本例用的是axis2 1.7.3版本. 3,创建接口. package com.dsdl.hcm.webServic ...
- 每天一个Linux常用命令 ls命令
ls:列出目录中的内容 -l 显示详细信息 -a 显示所有文件,包括隐藏文件 -i 显示inode -t :依时间排序,而不是用档名. -r :将排序结果反向输出,例如:原本档名由小到大,反向则为 ...
- CentOs如何找回root密码
当CentOs的root密码忘了的时候,可以进入单用户模式,更改一下root密码就可以了. 具体操作如下 1.重启Linux后,在此界面,3秒内按下回车键 2.出现此界面 3.按e键,进入下图,然后把 ...
- Ansible的roles标准化与Jenkins持续集成(三)
Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...
- ZOJ-3524 拓扑排序+完全背包(好题)
题意:在一个DAG上,主角初始有W钱起点在s点,每个点有一个代价wi和价值vi,主角从起点走到某一点不能回头走,一路上可以买东西(一个点的东西可以买无限次),且体力消耗为身上负重*路径长度.主角可以在 ...