常用的算法技巧总结.doc
《常用的算法技巧总结.doc》由会员分享,可在线阅读,更多相关《常用的算法技巧总结.doc(3页珍藏版)》请在三一文库上搜索。
1、常用的算法技巧总结今天和大家讲讲,在做算法题时常用的一些技巧。对于平时没用过这些技巧的人,或许你可以考虑试着去看看在实践中能否用的上这些技巧来优化问题的解。1. 巧用数组下标数组的下标是一个隐含的很有用的数组,特别是在统计一些数字,或者判断一些整型数是否出现过的时候。例如,给你一串字母,让你判断这些字母出现的次数时,我们就可以把这些字母作为下标,在遍历的时候,如果字母a遍历到,则arra就可以加1了,即 arra+;通过这种巧用下标的方法,我们不需要逐个字母去判断。我再举个例子:问题:给你n个无序的int整型数组arr,并且这些整数的取值范围都在0-20之间,要你在 O(n) 的时间复杂度中把
2、这 n 个数按照从小到大的顺序打印出来。对于这道题,如果你是先把这 n 个数先排序,再打印,是不可能O(n)的时间打印出来的。但是数值范围在 0-20。我们就可以巧用数组下标了。把对应的数值作为数组下标,如果这个数出现过,则对应的数组加1。代码如下:public void f(int arr) int temp = new int21; for (int i = 0; i 1n / 4 等价于 n 2n / 8 等价于 n 3。这样通过移位的运算在执行速度上是会比较快的,也可以显的你很厉害的样子,哈哈。还有一些 if(n % 2 = 1) dosomething();不过我们用与或运算的话会快
3、很多。例如判断是否是奇数,我们就可以把n和1相与了,如果结果为1,则是奇数,否则就不会。即if(n )具体的一些运算技巧,还得需要你们多在实践中尝试着去使用,这样用久后就会比较熟练了。5. 设置哨兵位在链表的相关问题中,我们经常会设置一个头指针,而且这个头指针是不存任何有效数据的,只是为了操作方便,这个头指针我们就可以称之为哨兵位了。例如我们要删除头第一个节点是时候,如果没有设置一个哨兵位,那么在操作上,它会与删除第二个节点的操作有所不同。但是我们设置了哨兵,那么删除第一个节点和删除第二个节点那么在操作上就一样了,不用做额外的判断。当然,插入节点的时候也一样。有时候我们在操作数组的时候,也是可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 算法 技巧 总结
链接地址:https://www.31doc.com/p-3434396.html