算法概述——目前关于算法的认识

	断断续续刷了50道左右算法题了,也看了一些常用的解决面试算法题的博客。想小小总结面试算法题的思路,并打算后续把刷到的常用算法题思路陆续写一些博客。
一、刷题目的:
1、复习编程语言
2、熟悉常见的数据结构和算法
3、学习别人的编程思维
二、抽象思维
1、时刻不忘未知量,清醒求什么
2、试错,用自身已有方法和已知条件进行尝试
3、回忆求解类似题目的方法,与做过的题的相同结构、性质
4、先尝试用特例解决问题,再尝试一般化
5、反过来推导
三、常用数据结构
1、Stack:后进先出
2、Linked List:链表可以快速地插入、删除,但查找较为费时
3、Hash Table:利用Hash函数来将数据映射到一块区域,方便O(1)的时间内以读取以及修改。
4、Tree:树在计算机中有着广泛应用。常用的有:二叉搜索树、红黑树、B+树,树的建立、遍历、删除都比较复杂, 通常使用递归的思路。
5、Heap:特殊的完全二叉树,“等级森严”,可以用O(nlogn)的时间复杂度来进行排序,可以用O(nlogk)的时间复杂度找出n个树中最大(小)的k个。
五大算法思想:
1、分而治之:有点类似“大事化小、小事化了”的思想,经典的归并排序和快速排序都用到这个思想。
2、动态规划:有点类似数学的归纳总结法,找出状态转移方程,然后逐步求解。
3、贪心算法:有时只顾局部利益,最终也会有好的全局收益。
4、搜索算法:在有限的解空间找出满足条件的解,深度和广度通常比较费时间,二分搜索每次可以将问题规模缩小一半,所以比较高效。
5、回溯:不断地去试错,同时注意回头是岸,走不通就换条路,最终也能找到解决问题的方法或者知道问题误解。
	有时候,还有一部分问题可能需要一些数学知识去求解,比如位运算。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值