LeetCode 是一个上提供一系列的算法题,并且具备多种编程语言优秀在线编辑体验。在这样的基础之上,LeetCode 对于各类题目的描述简洁易懂,题库更新极快,最重要的是它的含金量受到大众的认可,拥有庞大的用户群体,对于每一道算法题基本能够寻找到较好的解题思路。特别说明的是,该平台更为着重对于算法思路的训练,采取的并非 ACM 模式的全包全揽,而是提供一个需要实现的函数,测试用例的定义和主方法的调用等等将由系统提供。 需要训练 ACM 模式的,可以尝试牛客网的刷题模式。

LeeCode 刷题思路

作为一个初学者,对于 LeetCode 刷题并不敢说有多聪明,仅仅从我这段时间的刷题经验以及所了解到的相关知识做一个简单的分享。

刷题顺序

目前 LeetCode 对于题目的难度分类为 简单、中等、困难。并且题库规模已达两千多条,仍在更新中,这么庞大的题库,从何刷起。每次遇到各种刷题问题又找不到很好的解决方案。比方说:

  • 刷题方向不明确
  • 刷题难度定位不清晰
  • 题目优质解析还需时间寻找

首先,先简单说明一下,LeetCode 的难度水平:

  • 简单
    这个级别的题目旨在帮助大家熟悉基本技巧。通常来说,它们有一些简单粗暴的解答方法,我们需要学习的,则是应用这些小技巧来改进自己略显粗糙的解题方案。当我们随机点开一道数据结构或算法的简单题目,能在几分钟内列出最优解决方案并完成它们

  • 中等
    这个级别的题目旨在锻炼大家看穿问题的能力,它们通常是一些简单题目的 “伪装” 或“变化”。使用简单粗暴的解决方法可能会导致答题超时。我们需要学习的是分辨问题,并找出正确的解题方式。随机点开一个数据结构、算法的中等题目,如果我们能找出它们掩盖的问题,并可以在半小时内写出接近最优的答案,那么我们就可以适当挑战困难级别的题目了。

  • 困难
    通常情况下,这个难度,45 分钟的时间几乎不足以让我们写出一个完整的答案。我们需要学习的,是确定解题的正确方向。困难级别的问题可以暂不考虑最优答案,我们从成功解决问题开始,也可以适当取消答题的时间、空间限制。 解决问题之后,才来真正思考优化问题。

对于刷题的方向,具体看不同类型的刷题背景,介绍如下:

算法入门

如果是刚刚入门算法领域,想要刷刷算法题练练手的话,建议从难度为简单的算法题下手,并且,尽可能在一段时间内(一周 10 题,时间充裕 30 题)刷相同类型的算法题,直至提交成功率达到 80% 且提交代码用时尽可能达到超过 100% ,毕竟,成功率方面可能存在一些比较特殊的测试用例,无法达到 100% 。对于刷题类别的选择,可能各有各人的理解,这里提一下我的刷题顺序,不一定适合你:

数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯算法->贪心算法->动态规划->图论->高级数据结构

如果,如果可能的话,对于之前做过的题目进行一次二刷,尽可能快速度地完成一道道算法题。锻炼解题思路的获取能与实现力。倘若已经刷完以上的算法题目且能以较快速度完成,那就可以适当选择参加 LeetCode 每周周赛,体验一下竞赛的感觉。

算法进阶

如果是已经在算法领域浸淫多年,我这篇教程就是在您面前班门弄斧了,见笑了。不过,从我稚嫩的想法出发,目前的刷题方向着重于真题的相关研究,面对就业,刷各大公司算法真题,面对竞赛,刷往年竞赛真题。LeetCode 上也有每周周赛,建议前往外网版 LeetCode 参加周赛,国内周赛竞争还不是特别激烈,可能满足不了该有的竞争压力。争取拿到 LeetCode 周赛前几就是胜利的终点了。

刷题方法

刷题不是说看着别人的刷题思路甚至别人的代码对着一点点敲就行,最需要的是,对于每一道算法题目解题思路的理解,建议每刷完一道算法题就写相对应的笔记,不仅仅能够加深对当前算法题思路的理解,更方便后来对于同类型题目的归纳总结、融会贯通。

LeetCode 平台刷题策略

  1. 筛选完所需训练的算法问题,开始进入编辑页面,左边为问题描述,右边为代码编辑区,代码编辑区可以更改语言、测试用例、执行代码等等,对于代码的智能补全与语法高亮也有比较好的支持。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOSCmwfq-1641688244761)(/upload/2021/11/image-b974b921962d4d209d43daaf6d836ea7.png)]

  2. 理解算法题目要求并编辑完算法代码之后,先执行代码,解决对应报错且题目出现的测试用例都能通过即可进行第一次提交。切记,不要去看题目评论与题解,独立完成一次题目的解决。

  3. 倘若第一次提交之后解答错误,可以在左边界面点击解答错误选项,进入相应页面,即可了解是哪个测试用例不通过,复制当前用例,返回代码编辑界面,重新编写代码,在右边底部测试用例栏内填入刚刚复制的测试用例,再次执行代码,执行无误后,再次提交即可。

  4. 顺利通过代码提交之后,就能知道当前代码的质量问题,如果没有达到 100% ,说明仍然存在优化的空间。倘若,一直无法得到算法优化的思路,那就可以前往题目的评论区与题解区,从而获取相对应的优化解析思路。

  5. 认真分析对比每一个解答的题目思路,从而学习他们解决问题的方法,做好相应笔记,真正化为己用。

  6. 如果对于 LeetCode 自带的编辑器不适应,需要拉取到本地进行的话,只需在代码中定义 main 函数,构造个输入用例,最后复制代码编辑区的代码作为方法函数,并在 main 函数中调用即可。

基本对于 LeetCode 的刷题方面的问题也基本介绍完毕了。还有几点需要说明的是,珍惜每一次的提交,(执行代码不会记录)平台都会记录提交详情,并计算每一道题的提交完成率,最后,在个人资料会有相应的统计数据与擅长技能的计算。

LeetCode 周赛策略

对于LeetCode周赛方面,本人还未亲身体验过只能纸上谈兵了,筛选重要的官方说明进行展示,可能存在错漏,望周知。

官方说明

  • 竞赛的排名是根据得分和完成时间来计算,得分一致的则根据时间进行排名。每道题目都会有一个对应的分值,往往这个分值是根据题目的难度系数来评定的,难度越高分值就越大。

  • 竞赛目标是在最短的时间内解出这些题目,并且保证最少的出错率。每次错误的提交会 +5 分钟 的加时惩罚直到您有一次正确的提交。完成时间等于您完成当前最后题目的时间加上加时惩罚的时间。注意:通过的题目重复提交是不会对您的竞赛结果有任何影响的。

  • 竞赛期间,不需要遵循系统给出题目顺序做题。可以自由变换策略,扫读所有题目后,从最容易上手的题目开始。

  • 为保障竞赛的公平性,力扣将在竞赛中 隐藏部分测试用例。当参赛者在竞赛中提交未通过时,力扣不会显示给参赛者被隐藏的错误用例。

  • 违规行为:

    • 一人使用多账号提交(力扣「中文社区 LCCN」和「美国网站 LCUS」账号属于两个账号)

    • 多账号提交雷同代码(抄袭)

    • 使用不正当手段影响他人竞赛的

    • 竞赛结束前在讨论区发布答案的

  • 测试用例不全面,可能导致一些本不应该通过的提交显示为 “AC” 。在这种情况下,力扣会补充测试用例并 Rejudge 所有 “AC” 的提交。

  • 有效提交

    • Hardcode 提交
      如果参赛者存在 “Hardcode 测试用例” 行为的代码 “AC” 了题目,力扣将判定参赛者的提交为有效提交。
    • 预计算提交
      预计算结果是指:用户预先计算了部分或全部测试用例结果,并将其直接添加到至提交代码中。
      规则及判分方式:如果参赛者的提交代码存在预计算结果的行为,我们建议参赛者附上生成预计算结果的代码。如参赛者含预计算结果的代码 “AC” 了题目,力扣将判定参赛者的提交为有效提交。

相关链接

推荐解题解析网站

  • 代码随想录
  • lucifer github LeetCode 题目解析
  • Fucking-algrothm github LeetCode 题目解析
  • LeetCode Cookbook

参考文章

  • 代码随想录
  • 力扣竞赛规则

LeetCode的使用方法相关推荐

  1. leetcode刷题方法

    leetcode刷题方法 一.范围内的200题 二.刷题步骤 三.算法思路 四.更新 1.12日留 此文章借鉴 陈同学在搬砖 微信公众号的一篇文章: https://mp.weixin.qq.com/ ...

  2. LeetCode 91.解码方法

    LeetCode 91.解码方法 ways: s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2]; ...

  3. LeetCode 91. 解码方法(动态规划)

    1. 题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  4. leetcode java输入输出方法,有关IntelliJ IDEA中LeetCode插件配置问题

    最初目的是在实验室电脑和笔记本电脑上同时配置好这个刷题插件,并且git互联,并锻炼自己debug以及输入输出. 前面的可以参考教程: 首先是在intellij上面下载安装好leetcode插件, 然后 ...

  5. LeetCode 0091.解码方法 - 动态规划+原地滚动(比较高效的算法)

    [LetMeFly]91.解码方法 - 动态规划+原地滚动(比较高效的算法) 力扣题目链接:https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的 ...

  6. leetcode: 91. 解码方法

    91. 解码方法 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ...

  7. 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...

  8. Leetcode 91. 解码方法 (每日一题 20211013)

    一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映 ...

  9. leetcode - 91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码: ′A′−>1'A' -> 1′A′−>1 ′B′−>2'B' -> 2′B′−>2 ......... ′Z′ ...

  10. Java实现 LeetCode 91 解码方法

    91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总 ...

最新文章

  1. SetWindowOrg等相关函数
  2. iOS Swift GCD 开发教程
  3. 常用HLS优化指令总结
  4. QT乱码总结8.编码测试和总结三
  5. 电子信息工程班徽设计_蜻蜓AI说专业:与5G时代息息相关的电子信息工程专业怎么样?...
  6. 加油站都需要什么手续_农村买房过户都需要什么手续?
  7. linux设置系统自动开机,Linux系统中设置开机自动运行的两种方法
  8. 360浏览器 当前环境不支持支付宝控件_360 小程序来了,进攻 PC 端!
  9. 信息检索:“众筹”专利分析
  10. 记录下docker命令
  11. 航拍深圳湾体育中心全景
  12. rpm安装java_【CentOS】rpm包安装Jdk
  13. MyBatis中传递多个参数的方法以及传入混合参数的获取方式
  14. 【踩坑记录】导航时出现原地旋转,然后无法执行导航
  15. 12.9寸iPad Pro 5曝光:屏幕焕然一新、处理器强悍
  16. 复选框判断是否选中及获取值
  17. 厚积薄发打卡Day26:狂神说Java之JUC并发编程<代码+笔记>(上)
  18. PL/SQL中存储过程int和out的用法
  19. java鼠标各按键单击和左键击双击
  20. 关于考研报名照片,这样拍好看还容易通过

热门文章

  1. 2022年申请亳州市发明专利材料,专利说明书摘要写作技巧
  2. 联想服务器TS540装系统蓝屏,联想装win7蓝屏0x000000a5超详细图文解决方案
  3. Brooklyn 最新版 |创意多用途响应式 WordPress 主题下载
  4. 《微观经济学》第二章像经济学家一样思考
  5. jQuery API .ajaxComplete()
  6. ssm员工考勤签到请假管理系统 idea maven
  7. STM32用串口(USB串口)下载程序的方法
  8. 怎么找回计算机用户名密码怎么办,电脑steam账号密码忘记了怎么办|电脑找回steam账户的方法...
  9. 360加固签名验证_360加固需要签名和密码
  10. 解决: 小程序涉及提供天气查询等相关服务,请选择:工具-天气类目。微信小程序修改类目