算法学习笔记Day1 ——数据结构和算法的框架思维

1. 数据结构概述:

数据结构的最基本存储结构是数组(顺序存储)和链表(链式存储),不管是哈希表、树、图、堆栈、队列等,其基本实现方法都只有数组和链表两种。

其中数组特点是物理上连续、结构紧凑,支持随机访问,但是O(N)增删,因为需要平移数组;链表是逻辑上连续,方便增删,但是不支持随机访问,并且需要更多空间存储(指针)。

对于任何数据结构,所进行的操作无非就是遍历+访问,具体一点就是增删改查,遍历方式分为线性(for/while)和非线性(递归),数组是典型的线性遍历,链表是二者结合,二叉树就是典型的递归遍历。

2. 算法的本质:

算法的本质是穷举,这里的穷举不是暴力穷举,而是巧妙地穷举,应该做到无遗漏、无冗余。

所以看到一道题,脑子里应该闪过两个问题:

i、如何穷举?(无遗漏)

ii、如何聪明的穷举?(无冗余)

一般来说,递归算法(例如DP)难在如何穷举,非递归算法(例如贪心、KMP)难在如何聪明的穷举。

3. 算法技巧概括

数组/链表:双指针

二叉树:遍历一遍二叉树得出结果(回溯算法)、分解问题得出结果(DP)

图论:二叉树技巧的延伸

4. 学习顺序:

先学习数组和链表的基本操作,然后重点学习二叉树的题目,培养框架思维,因为所有递归算法都是树的遍历,这样在后续学习DP和回溯等算法时会势如破竹。

总结:刷题要注重知识体系结构的建立,要学会举一反三。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值