鱼C论坛

 找回密码
 立即注册
查看: 1979|回复: 6

[技术交流] 鱼C论坛Python精英挑战赛(第四季01期)评选结果

[复制链接]
发表于 2017-11-30 09:28:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本期挑战赛共有 12 位鱼油回答正确:

用户名
5000列表长度测试时间
100万列表长度测试时间
BngThea
3.902

yjsx86
5.297

aegis1417
7.421

蓝色王魂
0.015
0.672
SixPy
0.568

一片模糊望尘世
0.015
0.675
Elastcio
6.475

shigure_takimi
4.845

shuo
6.746

sky
6.191

brank
0.015
0.475
gunjang
0.015
0.298
                                                                                            
其中,4 位鱼油用时非常短,在 5000 列表长度时,几乎看不出差别,用 100 万列表长度进行测试,用时最短的是 gunjang 0.298s 第一名,其次是 brank 0.475s 第二名,蓝色王魂一片模糊望尘世 几乎接近 0.675s 并列第三。
gunjang 作为本期擂主参与下期精英挑战赛,下期挑战赛仍然只有算法题,所以也没得选啦

有请 @小甲鱼 老师颁奖,第一名奖励 50 鱼币,第二名 30 鱼币,第三名 20 鱼币。

本期竞猜获胜为“双数”。

请以下鱼油回帖领奖:

  • 青春@无限
  • sssnujj
  • shigure_takimi
  • BngThea
  • Elastcio
  • gunjang
  • Wesleyz
  • jmchang1011
  • aegis1417
  • 千年一刃

本期竞猜押宝无人押对。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-30 10:06:53 | 显示全部楼层
本期的第1、2、3名的获胜者的程序都非常优秀,大家可以参考他们的解题程序。
我简单讲一下本题的解题思路,普通的解法一般都是双层循环,依次比较左侧和右侧高度,然后用高度小的那侧乘上间隔距离。这样的解法答案是正确的,但是双层循环会导致效率大幅降低。
获胜的鱼油基本上都是对内层循环进行筛选,这样可以减少内层循环或者直接跳出内层循环。
下面是我的解答,虽然看上去也是双层循环,但是由于增加了2个break条件,使得内层循环可以很快终止,进而加快运算速度。
  1. def max_area(lst):
  2.         marea=0
  3.         for a in range(len(lst)-1):
  4.                 for b in range(len(lst)-1,a,-1):
  5.                         if lst[b]>=lst[a]:
  6.                                 marea=max(marea,lst[a]*(b-a))
  7.                                 break
  8.                         else:
  9.                                 marea=max(marea,lst[b]*(b-a))
  10.                         if marea>=lst[a]*(b-a): break
  11.         return marea
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-30 10:39:58 | 显示全部楼层
好好学习,看看别人怎么把时间压缩到1秒以内的。

评分

参与人数 1鱼币 +5 收起 理由
jerryxjr1220 + 5 竞猜获胜

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-30 14:51:26 | 显示全部楼层
请问,前三名的代码可以公开学习吗..?

评分

参与人数 1鱼币 +5 收起 理由
jerryxjr1220 + 5 竞猜获胜

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-30 16:07:48 | 显示全部楼层
Elastcio 发表于 2017-11-30 14:51
请问,前三名的代码可以公开学习吗..?

谢谢提醒,忘记设置了,本来就是要公开给大家学习的,这个是主要目的,比赛是其次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-1 00:06:39 | 显示全部楼层
本帖最后由 蓝色王魂 于 2017-12-1 00:30 编辑
jerryxjr1220 发表于 2017-11-30 10:06
本期的第1、2、3名的获胜者的程序都非常优秀,大家可以参考他们的解题程序。
我简单讲一下本题的解题思路 ...


brank的方法有错
max_area([1,2,1])应该是2,但是他的方法会算出1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-1 08:34:23 | 显示全部楼层
蓝色王魂 发表于 2017-12-1 00:06
brank的方法有错
max_area([1,2,1])应该是2,但是他的方法会算出1。

感谢反馈,可能你反应的问题的是对的。

不过这里有一点需要说明一下,我只能用提交的程序对参考测试数据做检验,如果提交数据通过所有参考测试数据,则认为程序正确。但是参考测试数据可能没有办法罗列所有极限情况,这样也就可能会有遗漏的情况发生。

由于我个人精力和能力有限,也无法做到穷尽所有不同的测试条件,所以评比结果仅以参考测试数据为准,包括以后的评比都依据这个前提。不过还是非常感谢你的反馈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 09:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表