2020京东校园招聘笔试编码题小分享--队列分组排序

被记住的永远是疯子!

简介

这道题是昨晚京东2020校园招聘数据研发岗的笔试题编码题原题,昨日时间有限,我又能力有限,所以木有写全,今天上午自己整理了一下,分享给需要的人吧。(有错还麻烦大家提示我,谢谢啦。)

题目

只能靠印象复述了:
有一队人(N个),按从左到右的顺序排成一队,每个人有自己的身高H,原始队列并未按照身高升序排列。现将队伍按照从左到右的顺序分成多个组,每组人数不一定相等,对每组人按身高排序,再按照拆分组的顺序排成一队,使得最后生成的队列是按照身高升序排列的(队列中间的身高可以相等)。求能够实现此需求的最大分组数。

输入:
	第一行:N(人数)
	第二行:Heights(身高,以空格隔开)
输出:
	第一行:n(最大分组数)

例: 
输入: 4
	 2 1 3 2
输出: 2

解题思路

我个人一开始对这道题的思路是很模糊的,递归?还是什么?想了许久,不如列一下需求。
分组:
  分成几组?–N个人,最多分N组,所以可能分的组数为1-N。
  怎么分?–N个人分1-N组的方法有很多种,举例子:4个人分三组包括3种情况,按照队列分可以列为(1,2,1)、(2,1,1)、(1,1,2),每个数字代表组内的人数。按照这个思想,我们可以根据每组的人数来拆分小组。所以就需要统计人数。

排序:
  排序方法:内置高阶函数sorted
  分析需求:求最大组数,N个人分1-N组,可以倒序来,N-1组,只要满足条件直接return返回最终结果。

代码

编译环境:python3.7   注:此代码并未考虑运算时间
编写代码:

import itertools
from copy import copy

if __name__ == "__main__":
	# 输入的内容s:
	s= '5\n2 1 3 2 5'
	# 获取人数N
	N = int(s.split('\n')[0])
	# 获取身高列表并将其以int格式存储至列表
	h_list = s.split('\n')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值