今年的2月比往常更长,不是因为比往年多了一天,而是被病毒隔离在家的日子显得十分漫长。如果再不给自己找点事情做的话,且不论身体方面的健康状况,精神方面可能也会有些隐忧。做为一名工程师,适时地读上几本平日可能没时间阅读的好书,应当是不错的选项。而除此之外,也可以做点有趣的算法题目以做消遣。

当今,LeetCode这个网站已经广为人知。打算刷算法题时,它几乎是必然的选择。当然国外还有CodeWar,国内也有牛客网这样的备选。不过由于几年前也曾在LeetCode上玩过几题的关系,当再次有刷题想法的时候,还是回归到那熟悉而又陌生的地方。

最开始的时候可能也只打算投入几天的时间去重温下做题的感觉,但随着隔离时间的延长,且年内计划也制订了认真研习算法这一项,不知不觉每日持续做题的日子已经过去一个月了。

迄今为止,简单难度的题目做了68道,中等难度的题目做了42道,困难难度的2道,总计112道。

先刷的是简单的题目,闲来一天可以做个5,6题,再之后开始做中等难度的,每日坚持做3题,至于困难的题目,则是无事可做时想尝试下挑战的。当然这样的结果是必然查找功略才能有些线索。

LeetCode经过数年的发展,已经从最初的触手可及的100多道题,变成为拥有1364题的真正意义上的题库,这个数字记录截止于2020/2/29,之后肯定还会增加。(在做题的时候就发现其偷偷地又多了几题)

我刷题的方式不是如他人一般选取其前几百题做为开端,而是采用主题突破的策略。

在LeetCode网页的右侧有各种主题的汇总。

  • 数组 226
  • 动态规化 185
  • 数学 171
  • 字符串 159
  • 树 128
  • 哈希表 122
  • 深度优先搜索 117
  • 二分查找 84
  • 贪心算法 73
  • 广度优先算法 65
  • 双指针 60
  • 栈 54
  • 回溯算法 53
  • 设计 46
  • 位运算 44
  • 排序 43
  • 图 40
  • 链表 37
  • 堆 34
  • 并查集 29
  • 滑动窗口 20
  • 分冶算法 19
  • 字典树 17
  • 递归 15
  • 线段树 12
  • 有序字典 10
  • 队列 9
  • 极小极大算法 8
  • 二叉索引树 6
  • 行扫描算法 6
  • 随机算法 6
  • 拓扑排序 6
  • 迷题 5
  • 几何算法 5
  • 二叉查找树 2
  • 拒绝采样 2
  • 水库采样 2
  • 旋转哈希 2
  • 记忆 1
  • 后缀数组 1

可以看到在各个主题之中,渉及数组的题目占比最多。稍做思考,不难想出这一结果也合乎情理,毕竟数组是最基本的数据结构,如果不把其弄清楚,想明白,更没有能力去触及其它算法与数据结构的内容了。

于是顺乎其理,我以数组这一主题开始了算法新旅程。刚入手时其题目数还是224道,结果两周后又增加了2道,目前还未有进一步的更新,所以并不清楚LeetCode题库更新的频率。

在刷题的时候会发现,一道题目往往不仅牵扯单一主题,还会与其它主题相关,做这类题目时获得的收获往往也更多。同时网站上确实有功能可以将题目所附的标签显示出来,建议最初时不要打开这一选项,因为知道了题目的特性,可能也就明白了解题的思路,但在刚开始答题的阶段,这样的提示并不有利于思考,只有在自身经过一番推敲琢磨之后,再查看这些信息,才能获得更佳体验。

当然,做这些题目,尤其是中等以上难度的题目,既使花上几个小时,解不出题,也是正常的情况,本人便是一例。因为之前没有仔细在算法方面打磨过自己,对算法题的生疏也是在所难免。这并非要给自己找一个推脱的借口,算法,就像其它有价值的能力一样必须要经过相当时间的刻意练习,才可以达成某种程度的熟练度。

种一棵树最好的时间是十年前,其次是现在。既然十年前自己没有努力提升算法能力,那么到了今日,还有这个念想的话,只有迈步前行一个方法而已。

这里只是些闲谈,并不会详细记录每道题的解法,在刷完数组主题所有题目后应该会有一篇比较详实的记录,这里又定了个小计划。再之后将会聚焦于LeetCode中100道最受喜爱的题目,完成后继续做总结,然后会是动态规划主题,还是需要总结,如此这般持续进行,虽然期望在一年内完成所有题目,但估计不太可行,不如退而求其次,能够养成经常做算法题目的习惯,反而会是更好的收获。

游LeetCode一月之闲谈的更多相关文章

  1. [LeetCode] Flip Game 翻转游戏之二

    You are playing the following Flip Game with your friend: Given a string that contains only these tw ...

  2. [LeetCode] Jump Game II 跳跃游戏之二

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  3. [LeetCode] Flip Game II 翻转游戏之二

    You are playing the following Flip Game with your friend: Given a string that contains only these tw ...

  4. [LeetCode] 45. Jump Game II 跳跃游戏之二

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  5. 【转载】浅谈游戏开发之2D手游工具

    浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK ...

  6. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  7. Remove Duplicates from Sorted List II 解答(有个比較特殊的case leetcode OJ没有覆盖)

    昨天被考了一道数据结构题,当时的实现比較一般.回来翻看leetcode,果然是上面的题.遂解之. accept之后翻看discuss别人的解法.发现非常多能够accept的代码都过不了我设计的一个ca ...

  8. [LeetCode] 909. Snakes and Ladders 蛇梯棋

    On an N x N board, the numbers from 1 to N*Nare written boustrophedonically starting from the bottom ...

  9. 最新 中手游java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.中手游等10家互联网公司的校招Offer,因为某些自身原因最终选择了中手游.6.7月主要是做系统复习.项目复盘.LeetCo ...

随机推荐

  1. 17.3.20---python的变量作用域

    1---变量的作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.Python的作用域是静态的,在源代码中变量名被赋值的位置决 ...

  2. istio介绍

    核心架构 解决的问题 故障排查 1.  这个请求在哪里失败了?A有调用B吗? 2.  为什么用户的请求/页面hung住了? 3.  为什么系统这么慢?那个组件最慢? 应用容错性 1.  客户端没有配置 ...

  3. GPIO外部中断

    来源:莆田SEO 在STM32中,其每一个外设都可以产生中断. 中断分为分为 ①系统异常,内核 ②外部中断,外设 NVIC(Nested Vector Interrupt Controller ):嵌 ...

  4. 关于Tarjan的一些问题

    $Q:$为什么tarjan求强连通分量要记录点是否在栈内,而求双连通分量不用? $A:$在有向图中存在横叉边,而无向图中不存在: $Q:$为什么用子搜索树中的$low[v]$来更新$low[k]$,而 ...

  5. 统计一个字符串中"java"出现的次数

    public class CountJava{ public static void main(String[] args){ String str = "dnajjavaNISLjavaE ...

  6. Python运维中常用的_脚本

    前言 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件. ...

  7. 论文翻译——Character-level Convolutional Networks for Text Classification

    论文地址 Abstract Open-text semantic parsers are designed to interpret any statement in natural language ...

  8. 记一次线上“no such file or directory”问题处理

    事件背景描述:项目是基于docker部署,在使用xxl-job的过程中,需要使用XxlJobLogger.log记录日志(非必须),项目定义日志其日志存储位置/home/logs.任务运行后包找不到文 ...

  9. [LC] 373. Find K Pairs with Smallest Sums

    You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Define ...

  10. SSID

    无线网络中SSID,是路由器发送的无线信号的名字!如果你将你的无线路由器的SSID:命名为:gouwancheng ,那么当你的无线路由器开启,并启用了无线功能,和允许了SSID广播,那么你就可以轻易 ...