算法和学习刷题思路分享(持续更新)

刷题的学习和思路

今天聊一下刷题,很多小伙伴非CS专业毕业后花了大量时间刷题但是没有得到相等的回报,我本人是3个月从差基础,一路刷题拿到offer的,这里我想发表一下我的个人看法,还有我学习的思路和心得。
具体算法和进阶数据格式的实现方式,我会尽量每天更新一两个算法和数据结构,帮助大家学习,同时也巩固自己的基本功。这篇文章会不断更新,有哪里错了或者少了求大家提出来,互相学习,一起成长~!

语言选取

这篇文章主要是以OOP Language为主。

刷题的语言什么都可以,我觉得没有什么语言适合和不适合刷题。如果是有过写代码经验,使用自己最擅长的语言,反复学习精益求精就行,没必要特意的换语言。(所以小老弟请专一
如果是0基础,什么语言都不会。这里建议从Java(Java国内外市场都好),或者前端语言JavaScript(非常优秀的前端语言,也可做后端,国外目前很流行)开始学起。python不管从市场角度和科研高度,都不太适合作为0基础的第一语言。
我相信在一个语言登峰造极,在其它类似的语言边查边学成长速度是很快的。比如说OOP类型的。

数据形式

刷题当然要先了解数据形式了,数据形式可以是一个解决问题的思路,也可以简化问题的一种方法。
下面我总结了几个常用的数据形式。

基础数据格式

最基础的数据形式

  • string, int, bool, char, long, byte, short
  • Array (1d, 2d… nd)

以上都是最基础的数据形式,一定要牢记。
每个数据形式需要了解:

  1. 空间占用
  2. 存的具体是什么
  3. 存在的意义是什么
  4. 对比类似的数据格式,优劣势是什么

进阶数据格式

接下来是进阶数据格式
点开超链接就可以看到具体的介绍和学习啦!(还在持续更新)

  • List
  • Queue
  • Stack
  • Tree
  • Tries
  • Heaps
  • Map
  • LinkedList
  • HashTable
  • HashMap

每个进阶数据形式需要了解:

  1. 总体的空间,时间成长复杂度。
  2. CRUD每次的时空间复杂度。(Add, Read, Update, Delete)
  3. 存的具体是什么,具体都可存什么?
  4. 存在的意义是什么
  5. 对比类似的数据格式,优劣势是什么
  6. 可以自己实现核心功能(自己去实现一个,其实很简单,强烈建议学完自己写一遍,用不了多久的)

很多人看见进阶算法,就很慌。觉得是个新的东西。
我个人觉得,这些无非就是把基础数据格式,用排列组合换一种方式呈现出来罢了,放平心态,记住要点,原理,多加练习。

高阶数据格式

接下来是进阶数据格式

  • UnionFind (也是算法,同是数据格式)
  • 还有很多,以后也会越来越多,

算法

  • Greedy
  • Recursion
  • Searching
  • Sorting
  • sliding window
  • DP
  • DIJK
  • 弗洛伊德
  • A*
  • Kadane
  • Topological Sort
  • Knuth-Morris-Pratt (KMP)
  • UnionFind (也是算法,同是数据格式)

解题思路

后面更新哈哈

题型总结

后面更新哈哈

String 字符串

字符串是最常考的,也是从职场中最常见的问题。

Palindrom 回文字符串
Subset

Tree 树

树的基本搜索
  • Inorder
  • Pre order
  • Post order
树的定义
二叉树
完美二叉树
BST

Linkedlist Node 链表

链表

面试思路

后面更新哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值