《算法系列》之刷题准备

2023-11-02

简介

  这里是刷题会用到的一些准备工作,和一些注意事项

习惯的养成

  我们在leetcode上写题时,代码输入框都会有模板,甚至还有需要用到的数据结构。优点是可以沉浸式的只关心代码逻辑的书写,缺点是,你面试的时候,只有一张白纸,让你用笔写代码时,可能会因为写不出这些代码,而挂掉。我的建议是,开始刷题时,可以用IDEA上LeetCode Editor之类的插件,或者直接浏览器刷题当做过渡,但刷完几十道题后,需要培养手写代码的能力。必要时候最好能默写一些模板,例如之后会讲的二叉树的前中后序遍历,回溯等,这样才能下笔如有神。
在这里插入图片描述
  除了锻炼手写能力外,还要特别注意代码规范问题。平时写代码时不能乱写一气,通过了就算成功。 知道怎么把复杂的算法写出来很难,知道怎么把复杂的算法简单规范的写出来更难,也更值得我们学习。 这样在面试中也会给我们加更多的印象分。这里有个小技巧,我们在刷题时,经常会用到辅助函数,我们统一命名为helper,返回值我们统一命名为res。为什么这么做呢,因为题很多,命名随意。平时没关系,面试时写错单词,或者命名方式不对就尴尬了。还有一个原因是,我感觉平时命名浪费了我写代码的大量时间,就为想个好名称,用这时间去抓紧时间AC,它不香吗!

关于语言

   刷题不用太纠结编程语言,选择自己熟练的即可,重要的是思路,而不是具体的语言实现。 我使用的是Java做总结,如果有其它语言的基础,看代码的话也能大概看懂,选择自己熟练的语言即可。

时间复杂度

   平时我们刷题时,需要尽量做到时间复杂度和空间复杂度最优,如果时间复杂度和空间复杂度你只能选一个优,一般要选时间复杂度更优,用空间换时间,因为现在磁盘越来越便宜,但时间效率越来越重要。当然不同业务还是需要不同考虑。
在这里插入图片描述
  在leetcode的服务器上,时间测试相对空间测试来讲更准一点,但也只是仅供参考。同一段代码,多跑几次,可能耗时就不一样了,这时只要我们的时间复杂度是最优的,就不用纠结那一两毫秒的差别当然大多时候,时间的差距就是我们时间复杂度的差距。 这里我们的目标是:每道题都要超过同语言用户的80%提交,否则,低效率通过,还不如不做,浪费了一道好题

空间复杂度

  我们的目标是更小的空间复杂度,但leetcode上的内存占用测试有点拉跨,不太准,我估计是同时运行的程序太多,我们的程序占用内存本就差别不大(相对于至少几十M的服务来说,几十个字节的确不算多),最后导致内存占用测试不准,经常同一个程序,一会超过10%,过一会儿就超过了90%,这个“内存消耗”可比“执行用时”离谱太多了。所以不用太纠结空间复杂度的超过比例,只要我们的复杂度是最优的就好。

重复刷

  高频题需要多刷,才能熟能生巧。尤其是HOT 100,至少要刷两次以上,只要刷过了一边之后,第二次写不出来,也会有印象的。如前文所说,有些模板最好能默写,这样才能做到秒杀程度,200题刷2遍吃透要好过400题只刷一遍。
在这里插入图片描述

每日一题和周赛

  刷到一定程度后,可以坚持做做每日一题和或者参加周赛,尤其周赛中的题目都是会进入题库的,有些周赛题目将来会变为仅会员可见,换言之,参加周赛可以免费做新题。做周赛还有一个好处是,有的大厂喜欢在面试时抽当周的周赛来做考题。并且我们还可以看看大佬的思路与操作,利于开阔眼界,增加见闻。
在这里插入图片描述

算法题与面试

  我相信大多数人刷题只是为了面试,而算法往往只是面试的一环,偏偏这一环的题量很大。出的题我们如果忘记了,或者直接不会都很正常。没面过不用气馁,只能说明我们和公司缘分未到,面过也不用太骄傲,还是要多多刷题,才能每日进步

回到首页

刷 leetcode 500+ 题的一些感受

下一篇

《算法系列》之 数组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《算法系列》之刷题准备 的相关文章

随机推荐

  • SpringBoot多数据源动态切换,不影响业务逻辑正常运行,服务高可用

    SpringBoot多数据源动态切换 不影响业务逻辑正常运行 服务高可用 本文使用Spring Boot 2 4 10版本和MyBatis实现多数据源动态切换 当主库MySQL宕机后自动切换到容灾PostgreSQL数据库 数据库及数据表示
  • Altium Designer -- EMC/EMI电路设计经验

    一 基本概念 参看 电磁兼容原理及应用 讲的相当的不错 随着科学技术的不断发展 各种电气和电子设备已广泛应用于国民经济的各个部门以及人们的日常生活中 电气和电子设备在正常运行的同时 也往外发射有用或无用的电磁能量 这些能量会影响其它设备的正
  • 【React】dva-cli建立脚手架后引用css 无效

    用dva cli作为脚手架建立工程后 开始尝试编写页面 然后立马发现一个坑爹的问题 在我less文件里面写了一个class 比如 MainHead 但是编译出来之后发现css文件里面变成了 MainHead xuaz 多了一个后缀 坑爹嘛这
  • JavaScript 预解析(面试经常问)

    文章目录 预解析 预解析 解析器运行 JS 分为哪两步 预解析 执行代码 预解析 js 引擎会把 js里面所有 var 还有 function 提前到当前作用域的最前面 执行代码 从上到下执行 预解析分为 变量预解析 变量提升 和函数预解析
  • 数字图像处理第一二章

    什么是数字图像处理 数字图像处理是指借助于数 计算机来处理数字图像 当x y和灰度值f是有限的离散数值时 称该图像为数字图像 一幅图像可定义为一个二维函数f x y 其中x和y是空间 平面 坐标 而在任一对空间坐标 x y 处的幅值f称为图
  • infix 关键字

    infix适用于有单个参数的扩展函数 如果一个函数使用了infix 关键字 接收者和函数之间的点操作 以及参数的一对括号可以省略 fun String printWithDefault0 default String print this
  • 动态路由协议BGP配置实战

    1 边界网关协议BGP BGP是自治系统路由协议 用于AS间交换路由信息 通常使用在运营商 运营商之间或是企业 运营商之间 目前广为使用的是BGP 4 支持CIDR BGP协议使用TCP179端口传输 同一AS的路由之间传输的协议称为IBG
  • 在HAL库中NVIC中断配置

    中断优先级分组配置 void HAL NVIC SetPriorityGrouping uint32 t PriorityGroup 配置函数 define IS NVIC PRIORITY GROUP GROUP GROUP NVIC P
  • 关于监控方案的一点想法供参考

    Author Skate Time 2017 12 11 关于监控方案的一点想法供参考 1 监控目标 监控的直接目标 及时 准确的发现潜在事件 并辅助运维人员处理生产事件 消除生产事件专家和高手与一线员工的区别 监控的增值目标 通过高度的可
  • SW3516中文资料书

    SW3516 是一款高集成度的快充车充芯片 支持 A C 口任意口快充输出 支持双口独立限流 其集成了 5A 高效率同步降压变换器 支持 PPS PD QC AFC FCP SCP PE SFCP 低压直充等多种快充协议 CC CV 模式
  • unity 使用声网(Agora)实现语音通话

    第一步 先申请一个声网账号 Agora官网链接 https console shengwang cn 第二步在官网创建项目 选择无证书模式 证书模式需要tokenh和Appld才能通话 第三步 官网下载SDK 然后导入到unity 也可以直
  • VulnHubBreach1.0[渗透测试]新手必看

    靶机下载地址 https download vulnhub com breach Breach 1 0 zip 前言 将下载好的靶场导入VMware 虚拟机设置网络模式为nat模式 即可开启渗透 阅读readme txt 作为多部分系列的第
  • linux 共享存储 iostat,Linux环境下存储监控工具nfsiostat介绍

    我对Linux下存储管理和监控工具的缺乏感到非常不满 虽然如此 我还是积极在寻找适合的工具 除了等待更好的工具出现 或自己开发一款 外 我们必须好好利用现有工具的功能 sysstat监控工具家族中的一员 在以前的文章中 我曾经介绍过iost
  • mmdetection常见问题总结

    mmdetection运行以及问题总结 最近因为工作需要 跑了下mmdetection 复现了论文的精度 总结下其中遇到的问题 希望对大家有帮助哦 1 环境设置 操作系统 ubuntu16 04 python3 7 pytorch1 6 0
  • HYSBZ bzoj 1941 Hide and Seek

    Problem www lydsy com JudgeOnline problem php id 1941 vjudge net contest 187908 problem B Reference BZOJ1941 Sdoi2010 Hi
  • 翻译:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation

    目录 摘要 介绍 方法描述 1 树亲和生成 2 级联过滤生成伪标签 3 为未标记的像素分配伪标签 文章地址 Tree Energy Loss Towards Sparsely Annotated Semantic Segmentation
  • 【Blender小技巧】点对齐

    使用吸附功能实现 设置完之后 选择要移动的对象 按G移动该对象 然后移动光标到要对齐的顶点即可 需要先将对象移动到要对齐的顶点旁 然后再重新按G移动对象才能较为精确 G Z顶点对齐中间点
  • 微搭低代码学习之基础操作

    低代码开发平台 是一种方便产生应用程序的平台软件 软件会开发环境让用户以图形化接口以及配置编写程序 而不是用传统的程序设计作法 此平台可能是针对 某些种类的应用而设计开发的 例如数据库 业务过程 以及用户界面 这类平台可能可以产生完整且可运
  • 常见数据结构

    先激励激励自己 数据结构是指组织数据的方式 它是算法的基础 线性结构和非线性结构 线性结构 是一个有序数据元素的集合 它应该满足下面的特征 集合中必存在唯一的一个 第一个元素 集合中必存在唯一的一个 最后的元素 除最后一元素之外 其它数据元
  • 《算法系列》之刷题准备

    简介 这里是刷题会用到的一些准备工作 和一些注意事项 习惯的养成 我们在leetcode上写题时 代码输入框都会有模板 甚至还有需要用到的数据结构 优点是可以沉浸式的只关心代码逻辑的书写 缺点是 你面试的时候 只有一张白纸 让你用笔写代码时