算法与应用:981专业课细节强化复习

  • 课后题目与数据结构课后题:汇总思想,回炉消化应用的思想,形成自己的做题思考资料库-在经典与精
  • 做题leetcode的程度:开始掌握应用 每个知识点总结
  • 技巧:
  • 启发式思维
  • 图画式理解思维
  • 简化逻辑

算法思想:分治+减治+小技巧

数组-基础(下面大部分应用数组的去操作)

//每一类数组题目:必会

个人答题思路
字符串
  • 子序列:不一定连续;子串:连续
数论
枚举
  • 位运算技巧
  • 聪明的枚举:众数的优化
  • 二进制枚举:
  • 一般的是10进制枚举
  • 二进制枚举例题:1000瓶毒药,2^10 = 1024 转化成二进制
分治与减治
贪心
  • 解题步骤:建模,分解子问题,最优子结构,状态转移
动态规划
  • 动态规划:重叠子问题的改进:制表记忆+自下而上
  • 制表与记忆
  • 递归:自上而下;递推:自下而上
  • 最大递增子序列和(和数组相关的这一堆题目)
  • 背包问题的解决策略:

数据结构经典算法实现:pseudo code

数据全集:向量链表,栈,搜索树,词典——>在数据元素之间维护显式/隐式(词典)的全序关系
优先级队列:操作对象限定于当前的全局极值者,根据数据对象之间相对优先级对其进行访问

一、贪心与动规策略思想+递归与迭代操作:搜索问题的处理

1. 栈操作
  • 进制转换算法
借助栈操作:s.push(digit[当前位数值])   O(lgn)
1. 递归:尾递归
2. 迭代
  • 左右括号匹配
**括号(变量/不定量)** 入栈暂存,迭代出栈匹配操作:O(n)
  • 表达式S求值:顺便并转换为逆波兰式RPN
1. 运算数栈opnd暂存**操作数(变量)**,运算符栈optr暂存运算符,迭代比较**运算符优先级(变量)**
2. 栈顶运算符高时进行操作
3. 小trick:/细节处理/
4. 		利用判断操作符栈是否为空跳出循环条件,初始增加'\0',匹配字符串S的结束符
5. 		当下进入操作处理时:根据需要的操作数个数划分为一元操作符!和二元操作符
6. 		RNP逆波兰表达式的性质:操作数位置不变,运算符位置根据运算先后顺序从左到右依次排列:因此对S处理时,遇到操作数直接添加到RPN和运算符栈,遇到操作符判断优先级,当下处理时添加该运算符到RPN中
  • RPN求值算法
//输入:RPN
//输出:数值
1. 引入栈存放操作数
2. while遍历RPN字符串{
   
3. 		如果是运算符取数操作,结果存入栈
4. 		如果是操作数,存栈
5. }
6. 返回栈顶
2. 数据组查找:数据-词条与字符串

词典(同类映射):词条(key, value),循值访问更为自然,适用范围更广

  • 跳转表
数据结构:Skiplist跳转表
跳转表的底层实现方式:四联表quadlist
//查找
//插入
//删除
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值