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

一、为什么要刷题?

  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.rhkb.cn/news/346352.html

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

相关文章

lua对接GPT4实现对话

演示效果: 准备材料: 1、FastWeb网站开发服务:fwlua.com 2、一台服务器 该示例使用开源项目:fastweb 实现。 代码比较简单,主要是两部分,一个lua代码和一个html页面,用来用户发起请求和后台…

5.1 实体完整性

一个表只能有一个主键约束,且主键约束不能取空值。 通过unique约束定义唯一性,为了保证一个表非主键列不输入重复值,可在该列定义unique约束。 primary key约束与unique约束主要区别如下。 (1)一个表只能创建一个primary key约束&#xff0…

计算机组成原理之指令格式

1、指令的定义 零地址指令: 1、不需要操作数,如空操作、停机、关中断等指令。 2、堆栈计算机,两个操作数隐藏在栈顶和此栈顶,取两个操作数,并运算的结果后重新压回栈顶。 一地址指令: 二、三地址指令 四…

Flutter 实现dispose探测控件

文章目录 前言一、什么是dispose探测控件?1、通常情况2、使用dispose探测控件 二、如何实现1、继承StatefulWidget2、定义dipose回调3、定义child4、重载Dispose方法5、build child 三、完整代码四、使用示例1、基本用法2、设置定义数据 总结 前言 开发flutter一般…

《TCP/IP网络编程》(第十四章)多播与广播

当需要向多个用户发送多媒体信息时,如果使用TCP套接字,则需要维护与用户数量相等的套接字;如果使用之前学习的UDP,传输次数也需要和用户数量相同。 所以为了解决这些问题,可以采用多播和广播技术,这样只需要…

数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(上篇)

RapidMiner 案例模板 RapidMiner 机器学习平台提供了一个可视化的操作界面,允许用户通过拖放的方式构建数据分析流程。 RapidMiner目前内置了 13 种案例模板,这些模板是预定义的数据分析流程,可以帮助用户快速启动和执行常见的数据分析任务。…

gdb 【Linux】

程序发布方式:  1、debug版本:程序会被加入调试信息,以便于进行调试。  2、release版本:不添加任何调试信息,是不可调试   确定一个可执行程序是debug,还是release [cxqiZ7xviiy0goapxtblgih6oZ test_g…

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中,选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合,帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义:分辨率…

Deepin安装PostGresql

最近要把开发环境完全从Windows移到Deepin上,本次介绍在Deepin借助apt-get安装和配置数据库。同时可以用Dbever提供图形化管理工具。 安装PostGreSQL数据库和创建数据库 #安装postgresql zhanglianzhuzhanglianzhu-PC:/$ sudo apt-get install postgresql-16 正在…

876. 链表的中间结点-链表

876. 链表的中间结点 - 力扣(LeetCode) 快慢指针 class Solution { public:ListNode* middleNode(ListNode* head) {ListNode* slow head;ListNode* fast head;while(fast ! nullptr && fast->next ! nullptr){slow slow->next;fast …

论文阅读:Indoor Scene Layout Estimation from a Single Image

项目地址:https://github.com/leVirve/lsun-room/tree/master 发表时间:2018 icpr 场景理解,在现实交互的众多方面中,因其在增强现实(AR)等应用中的相关性而得到广泛关注。场景理解可以分为几个子任务&…

【Web世界探险家】3. CSS美学(二)文本样式

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

vue-cli是什么?和 webpack是什么关系?

前言 Vue CLI是Vue.js项目的官方脚手架,基于Node.js与Webpack构建。安装Vue CLI前需确保Node.js已安装,随后通过npm全局安装。Vue CLI能迅速创建和管理Vue.js项目,提升开发效率。而Webpack则负责资源打包,通过配置文件管理依赖、插…

【Bazel入门与精通】 rules之属性

https://bazel.build/extending/rules?hlzh-cn#attributes Attributes An attribute is a rule argument. Attributes can provide specific values to a target’s implementation, or they can refer to other targets, creating a graph of dependencies. Rule-specifi…

Java(十七)---ArrayList的使用

文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …

苹果WWDC大会AI亮点:大揭晓

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

STM32-电灯,仿真

目录 前言: 一. 配置vscode 二. 新创建软件工程 三. 仿真 1.新建工程想到,选择名称和路径 2.从选中的模板创建原理图 3.不创建PCB布版设计 4.选择没有固件项目 5.完成 四.源码 五. 运行效果 六. 总结 前言: 这篇主要是配置vscode和创建仿真,和点灯的完整代码,欢迎大…

C语言 图形化界面方式连接MySQL【C/C++】【图形化界面组件分享】

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一.配置开发环境 二…

零拷贝技术

背景 磁盘可以说是计算机系统重最慢的硬件之一,读写速度相对内存10以上,所以针对优化磁盘的技术非常的多,比如:零拷贝、直接I/O、异步I/O等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的…

风能远程管理ARMxy嵌入式系统深度解析

智能技术正以前所未有的速度融入传统能源管理体系,而ARMxy工业计算机作为这一变革中的关键技术载体,正以其独特的性能优势,为能源管理的智能化升级铺设道路。本文将聚焦于智能电表、太阳能电站监控、风力发电站远程管理三大应用场景&#xff…