【学习心得】算法刷题心得分享

一、为什么要刷题?

  1. 提升编程能力,强化对数据结构的理解,熟练掌握常用的算法等
  2. 为竞赛、考试做准备
  3. 找实习、找工作需要(上机考试+面试手撕代码)
  4. 提升自信心,放松一下

二、刷题前应该有哪些知识储备?

(1)基本掌握数据结构和常用算法

① 基本数据结构

  • 栈:后进先出(LIFO)的数据结构,用于存储元素,如函数调用栈。
  • 队列:先进先出(FIFO)的数据结构,用于按顺序处理元素,如打印任务队列。
  • 链表:通过节点连接元素,可动态增删元素,适用于非连续内存空间。
  • 树:节点间存在父子关系的层次结构,如二叉树、搜索树等。
  • 堆:特殊的树形数据结构,通常实现为完全二叉树,用于实现优先队列。

② 常用算法

  • 贪婪算法:在每一步选择中都采取最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
  • 动态规划:通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。
  • 分治算法:将原问题分解为若干个子问题,递归地求解子问题,并将子问题的解合并起来得到原问题的解。
  • 回溯算法:通过探索所有可能的候选解来找出所有的解,如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些修改来丢弃该解。
  • 分支限界:与回溯算法类似,但加入了剪枝操作,即在搜索过程中根据某种评估函数舍弃一些不可能得到最优解的分支,提高搜索效率。

(2)懂得如何入手进行算法设计与分析

  • 按照要求设计对应可以完成任务的算法
  • 算法复杂度分析

三、作为一名小白如何刷题?

(1)刷leetcode中的题目

① 目的:建立扎实的coding能力

② 方法

  1. 掌握一门基本的编程语言
  2. 按照特定模块进行系统性刷题(千万不要简单按照esay/mid/hard的顺序随机刷题)
  3. 具体按照哪一种模块的顺序刷题可以参考 https://www.zhihu.com/question/36738189
  4. 必须要反复刷题,做到一题多解(分析每一种解法的复杂度),而且不能只盯着高频题目
  5. 具体刷题:一看、二抄、三改、四写
  6. 现在leetcode上面有上千道题目,每个部分一定要找有代表性的题目去做,而且在刷题过程中会用模版去套用

(2)刷《剑指offer》中的题目

① 目的:建立求职面试的解题思路

② 方法

  1. 建议刷三遍
  2. 第一遍:不需要死磕,但是要完全弄懂题目,必须看题目的分析
  3. 第二遍:进一步熟悉题目,对一道题的各种变形也可以做出
  4. 第三遍:对于这不到100道题和一些相应的变形已是特别熟练的状态,上机编程没有问题,手撕代码也没问题

(3)可能遇到的问题与解决方案

① 可能遇到的问题

刷过的题目老忘记,刷题的速度很慢,坚持不下来

② 建议的解决方案

  1. 及时复习,反复刷题,与人分享,以及做笔记
  2. 制定计划,分解计划,快速刷题(为了节约时间,5分钟没有思路就不要浪费时间了,明确认知“你是为了通过面试”,理解不了的先背下来)
  3. 为自己制定奖惩措施,或者组队刷题

四、资料推荐

(1)书籍

  • 《大话数据结构》:用通俗易懂的方式介绍数据结构,适合初学者。
  • 《啊哈!算法》:通过生动的例子和故事讲解算法,增加学习乐趣。
  • 《图解算法》:通过图解的方式直观展示算法的执行过程,易于理解。
  • 《算法竞赛入门经典》:针对算法竞赛的入门书籍,适合有一定基础的读者。
  • 《hello算法》:深入浅出地介绍算法,适合对算法感兴趣的读者。

(2)课程

  • 中国大学MOOC《数据结构》(陈越):陈越老师主讲的经典数据结构课程,内容全面且深入。
  • 程序设计基础(C&C++)(戴波):涵盖C和C++语言基础及程序设计思想,为学习数据结构打下坚实基础。

(3)刷题网站

  • LeetCode:提供大量编程题目和在线评测,适合算法练习和面试准备。
  • 牛客网:不仅有在线编程题目,还有面试经验分享和模拟面试等功能。
  • PAT(Programming Ability Test):浙江大学推出的在线编程能力测试平台,题目难度较高。
  • 各大高校的OJ系统(如北大、浙大等):提供大量题目和在线评测,部分题目难度较高,适合挑战。
  • Codeforces:全球知名的编程竞赛平台,提供大量题目和在线比赛,适合提升算法水平。

【腾讯文档】刷题分享icon-default.png?t=N7T8https://docs.qq.com/mind/DY3JhS0VQaW12b3hL?mode=mind

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMH307【亲测】 怀旧端游【WD】1.73单机版带GM后台视频安装教程虚拟机端

资源介绍: 是否需要虚拟机:是 文件大小:压缩包约8G 支持系统:win7、win10、win11 硬件需求:运行内8G 4核及以上CPU 资源截图: 下载地址

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理🐾 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集🐾 数据存放位置:/Users/***/PycharmProjects/llm/prom…

uniapp内置的button组件的问题

问题描述 由于想要使用uniapp内置button组件的开放能力,所以就直接使用了button,但是他本身带着边框,而且使用 border:none;是没有效果的。 问题图片 解决方案 button::after {border: none;} 正确样式 此时的分享…

HarmonyOS(31) @Prop标签使用指南

Prop Prop简介State和Prop的同步场景使用示例参考资料 Prop简介 子组件中Prop装饰的变量可以和父组件建立单向的同步关系。子组件Prop装饰的变量是可变的,但是变化不会同步回其父组件。Prop变量允许子组件修改,但修改后的变化不会同步回父组件。当父组件…

python书上的动物是啥

Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个叫Monty Python…

【核心动画-转场动画-CATransition Objective-C语言】

一、转场动画,CATransition, 1.接下来,我们来说这个转场动画啊,效果呢,会做这么一个小例子, 感觉有一个3D的一个样式一样, 转场动画呢,就是说,你在同一个View,比如说,imageView,去切换图片的时候,你可以去用这个,转场动画, 实际上,包括,控制器之间的切换,也…

新手上路:Linux虚拟机创建与Hadoop集群配置指南①(未完)

一、基础阶段 Linux操作系统: 创建虚拟机 1.创建虚拟机 打开VM,点击文件,新建虚拟机,点击自定义,下一步 下一步 这里可以选择安装程序光盘映像文件,我选择稍后安装 选择linux系统 位置不选C盘,创建一个新的文件夹VM来放置虚拟机,将虚拟机名字改为master方便后续识别…

期望24K,商汤科技golang开发 社招一二三 + hr 面

商汤科技对数据库和中间件相关的东西问的比其他的大厂要少很多,可能他们更多是和算法相关,没有什么高并发的场景。总体感觉对技术的要求不是特别高。当时问了他们主管,我面试的部门的工作是主要去实现他们算法部门研究的算法,感觉…

[图解]企业应用架构模式2024新译本讲解09-领域模型2

1 00:00:01,750 --> 00:00:03,030 代码还是一样的 2 00:00:03,040 --> 00:00:12,640 我们还是从前面人家做的复刻案例来看 3 00:00:14,170 --> 00:00:15,200 这个是它的类图 4 00:00:15,640 --> 00:00:20,650 我们同样用UModel逆转,这个太小了&#…

windows RNDIS开发-概念

远程 NDIS (RNDIS) 是一种独立于总线的类,适用于动态 即插即用 (PnP) 总线(例如 USB、1394、蓝牙和 InfiniBand)上的以太网 (802.3) 网络设备。 远程 NDIS 通过抽象控制和数据通道在主计算机与远程 NDIS 设备之间定义与总线无关的消息协议。 …

【微信小程序】页面导航

声明式导航 导航到 tabbar 页 tabBar页面指的是被配置为tabBar的页面。 在使用<navigator>组件跳转到指定的tabBar页面时&#xff0c;需要指定url属性和open-type属性&#xff0c;其中&#xff1a; url 表示要跳转的页面的地址&#xff0c;必须以/开头open-type表示跳…

spring boot3登录开发-2(3邮件验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…

场外个股期权标的有哪些?

今天带你了解场外个股期权标的有哪些&#xff1f;场外个股期权是一种金融衍生品&#xff0c;它不在交易所内进行交割&#xff0c;而是在交易所以外的场所进行交易的股票期权合约。 场外个股期权标的有哪些&#xff1f; 场外个股期权的标的通常包括A股市场上的融资融券标的&…

ARM服务器在云手机中可以提供哪些支持

ARM服务器作为云手机的底层支撑&#xff0c;在很多社媒APP或者电商APP平台都有着很多看不见的功劳&#xff0c;可以说ARM扮演着至关重要的底层支持角色&#xff1b; 首先&#xff0c;ARM 服务器为云手机提供了强大的计算能力基础。云手机需要处理大量的数据和复杂的运算&#x…

微服务第一轮

课程文档 目录 一、业务流程 1、登录 Controller中的接口&#xff1a; Service中的实现impl&#xff1a; Service中的实现impl所继承的接口IService&#xff08;各种方法&#xff09;&#xff1a; VO&#xff1a; DTO&#xff1a; 2、搜索商品 ​Controller中的接口&a…

【亚马逊云科技 CSDN 联合巨献】 「对话AI 构建者:从基础到应用的 LLM 全景培训」 限时免费!

&#x1f680;&#x1f31f;【亚马逊云科技 & CSDN 联合巨献】 &#x1f4da;「对话AI 构建者&#xff1a;从基础到应用的 LLM 全景培训」&#x1f525; 限时免费&#xff01; &#x1f4c6; 抓紧时间&#xff01;6月7日前注册&#xff0c;原价 399&#xff0c;现在仅需 0…

C基础与SDK调试方法

REVIEW 上次学习了一下软件使用流程zynq PS点灯-CSDN博客 本次学习一下C编程基础与调试方法 1. 硬件编程原理 小梅哥视频链接&#xff1a; 07_Xilinx嵌入式裸机硬件编程原理_哔哩哔哩_bilibili 对应的课程笔记&#xff1a;【zynq课程笔记】【裸机】【第7课 】【硬件编程原理…

C++ STL - 容器

C STL&#xff08;标准模板库&#xff09;中的容器是一组通用的、可复用的数据结构&#xff0c;用于存储和管理不同类型的数据。 目录 零. 简介&#xff1a; 一 . vector&#xff08;动态数组&#xff09; 二. list&#xff08;双向链表&#xff09; 三. deque&#xff08…

yolov8摔倒检测(包含数据集+训练好的模型)

基于先进的YOLOv8模型&#xff0c;实现了一套高效可靠的人体摔倒检测系统。YOLOv8作为YOLO系列的最新成员&#xff0c;以其卓越的检测速度和准确性&#xff0c;在计算机视觉领域尤其是目标检测任务中表现出色。本系统不仅能够实时处理视频流或监控画面&#xff0c;还能对静态图…

SwiftUI中Menu和ControlGroup的使用

本篇文章主要介绍一下Menu组件和ControlGroup组件的使用。Menu组件是在iOS 14&#xff08;tvOS 17&#xff09;推出的一个组件&#xff0c;点击后提供一个可选择的操作列表。ControlGroup组件是一个容器视图&#xff0c;以视觉上适当的方式为给定的上下文显示语义相关的控件&am…