第一次LeetCode周赛心得(力扣

您所在的位置:网站首页 力扣竞赛排名有用吗 第一次LeetCode周赛心得(力扣

第一次LeetCode周赛心得(力扣

2024-02-16 12:49| 来源: 网络整理| 查看: 265

第一次力扣参赛:第 174 场力扣周赛

第 174 场力扣周赛赛题: https://leetcode-cn.com/circle/discuss/lEfEkb/view/OrAJAh/

第 174 场力扣周赛国内排名(点击小图标可查看选手代码): https://leetcode-cn.com/contest/weekly-contest-174/ranking/1/

总体心得

使用python3,做成了第一道题,第二道题的解超时,便结束了第一次周赛。

下午看了排行榜靠前的参赛者代码,最快的在17分钟内就完赛了(使用python3),使用python3的和c++的数量几乎对半分。

先来说个问题:使用python算作弊吗?

我觉得不算,尽管python中有collections库这种强大的操作集,但是对不懂数据结构、或没有赛题解决思路的人来说,终究还是没有帮助的。python只是帮助我们把精力全部集中在算法的流程上,而非程序设计与具体实现上(python封装了太多常用操作,减少实现压力)。

况且,c++中也有vector()、java中也有hashtable()这种类似的可调用的数据结构对象,来简化操作。因此,python不算作弊。

我目前的编程,都是为了实现强化学习算法,没有涉及到底层系统或者企业级开发,因此选择用python3来刷力扣。

使用c/cpp来对每个指针进行操作,可能会在算法的时间空间复杂度上有一定优势,但是,实现起来会比较麻烦,而周赛比的是速度。况且,python3中封装的代码都是方法较优的。

这次最快的同学是 zerotrac2 ,看到了其领英上的简历,很强,高中就有极好的竞赛基础,在清华软工有9/74的排名:

在这里插入图片描述

这位同学的简历链接:https://www.linkedin.com/in/zerotrac/

看了他的代码,觉得“并不是我现在无法达到的水平”,收获了很多库的使用技巧与设计思想,下面对四道题一一分析。

[1341] 方阵中战斗力最弱的 K 行

很简单的排序问题,我的代码为:

class Solution(object): def kWeakestRows(self, mat, k): """ :type mat: List[List[int]] :type k: int :rtype: List[int] """ fighter_dict = dict() r = -1 for _ in mat: r += 1 # key: row number, value: soldiers_count fighter_dict[r] = sum(mat[r]) returns = list() while k > len(returns): current_min_row = fighter_dict.keys()[0] for row in fighter_dict: if fighter_dict[row] List[int]: c = [(sum(x), i) for i, x in enumerate(mat)] c.sort(key=lambda x: (x[0], x[1])


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3