前言:
现时朋友们对“数据结构算法题怎么学比较好”大体比较着重,朋友们都想要知道一些“数据结构算法题怎么学比较好”的相关文章。那么小编同时在网上网罗了一些有关“数据结构算法题怎么学比较好””的相关文章,希望我们能喜欢,同学们快快来了解一下吧!5个步骤:基础语法学习—>语法配套练习—>数据结构—>算法入门—>算法进阶
一、数据结构
官方解释:数据结构是一门研究非数值计算的程序设计问题中的额操作对象,以及他们之间的关系和操作等相关问题的学科。
大白话:数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据;
数据结构的分类
传统上,我们可以把数据结构分成逻辑结构和物理结构两大类。
逻辑结构分类:
逻辑结构市场ongoing具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互关系分类。这是学习需要重点关注的部分。
其中的知识点:
一维:
基础: 数组 array (string),链表 linked list高级:栈 stack,队列 queue, 双端队列 duque,集合 set,映射 map (hash or map),等等
二维:
基础:树 tree, 图 graph高级:二叉搜索树 binary search tree(红黑树 red-black tree, AVL),堆 heap,并查集 disjoint set,字典树 Trie
特殊:
位运算 Bitwise,步隆过滤器 BloomFilterLRU Cache (缓存)二、算法
官方解释:算法是指解题方案的准确而完整地描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
大白话:根据一定的条件,对一些数据进行计算,得到需要的结果。
任何的高级算法与数据结构都会转换成if else,for循环,这些的根本还是计算机基础。高级算法重点是找到重复单元。
跳转语句 (Branch) :If-else,switch循环 (Iteration) :for, which,while loop递归 (Recursion) : Divide & Conquer, Backtrace搜索 (Search) :深度优先搜索 Depth first search,广度优先搜索 Breadth first search,启发式搜索 A*动态规划 (Dynamic Programming)二分查找 (Binary Search)贪心 (Greedy)数学 (Math),几何 (Geometry)三、学习方法
千万不要盲目学习,有的时候觉得自己听一遍课就会了,这种简直是自欺式学习。
通过听课或者看书吸收知识点能够写出执行代码能写出一个项目能实现功能
这个是【强制输出】带动【吸收内化】的学习过程。数据结构和算法呢,就是要刷题!
理解题目:审题可以多审几遍,避免自己理解错误多种解决方案:对比时间和空间复杂度,反复最求最优解多写代码:每一种写法尽量都掌握,尽量多写几遍多测试案例:在LeetCode上可以改变测试案例,多测试几种案例;刷题刷它个四五遍!
第一遍:
阅读审题之后,思考解法。如果你没有思路就别浪费时间了,直接看解法。记录多个解题方法,比较解题方法的优劣。这一遍看过答案之后记得默写!
第二遍:
自己编写,这时候就不要看答案了。自己写完提交代码,有没有bug都没事,自己要学会debug!知道调试完了位置。编写出多种解题方案。持续优化,重点可以放在执行时间。可以看看LeetCode上面打败了多少人。
第三遍:
重复之间刷过的题,专项练习
第四遍:
建议每隔一段时间,就重复练习自己刷过的题。