
面试算法
qychjj
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在单向链表中如何快速查到倒数第n个节点?
<br />(1)定义2个指针p1,p2。<br />(2)使用循环让p2指向顺数第n个节点;<br />(3)然后,p1和p2同时移动,直到p2指向NULL,此时p1应该指向倒数第n个节点。<br /> <br />如果n=1,那么p1指向倒数第一个节点,这是很常见的算法。原创 2010-09-03 09:21:00 · 1610 阅读 · 0 评论 -
快速排序使用什么数据结构比较好?
<br />快速排序涉及到大量前后数据的交换,如果涉及到交换,使用指针比较好。<br />因此,快速排序使用链表数据结构比较好。<br /> <br />如果在Vector 和list(标准库)中选,那么使用list比较好。<br />Vetor是通过连续的内存块实现的,可以使用index来直接寻址;<br />list使用链表实现。原创 2010-09-03 09:25:00 · 2626 阅读 · 0 评论 -
删除数组中某个元素
1) 使用不是该元素的值生存一个新的数组; 时间复杂度o(n),空间复杂度O(n)2)从end开始遍历,当遇到该元素时,将后面的元素前移;时间复杂度o(n*n),空间复杂度O(0)std::vector<int> removeElementFrom(std::vector<int> vec, int elem){ std::vector<int>...原创 2019-04-11 07:05:25 · 467 阅读 · 0 评论 -
二叉树的遍历:层序遍历,前序遍历,中序遍历,后序遍历
层序遍历:可以采用队列的数据结构。当前节点入队->然后出队,出队时将其左右孩子入队,循环队列进行出队,每次出队将其左右孩子入队。当队列为空时,整棵树层序遍历完毕。...原创 2019-04-11 07:09:25 · 355 阅读 · 0 评论 -
对++a和a++的重载
首先知道他们的区别:i++ : 表达式的值是i,i值也会增加1;++i:表达式的值是i+1,i值也增加1在重载某个类的两个++时:(1)i++clone一个临时对象,保持i值; //注意,不要怕使用空间,该使用时也得使用,后面可以优化将成员data加1;返回新生成的临时变量;(2)++i:直接将成员data加1,然后返回 *this...原创 2019-04-11 07:16:54 · 806 阅读 · 0 评论 -
如何判断一个list里是否有环
使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。https://blog.csdn.net/mucaoyx/article/details/81395782...原创 2019-08-05 22:00:22 · 1542 阅读 · 0 评论 -
C语言如何实现多参数函数
也就是c语言如何实现变长参数。int printf(const char* format, ...);调用惯例,参数从右到左入栈,具名参数format(称之为lastarg),在进程虚拟内存空间栈的顶端,即小地址端(栈是从大地址到小地址增长的。)使用方式:va_list ap;//定义一个变量, 一个指针。用来指向各个不定参数。类型为 void* 或 char*va_start...原创 2019-08-05 22:28:23 · 7722 阅读 · 0 评论 -
从演变历史,看透本质:查找算法以及红黑树
https://blog.csdn.net/yang_yulei/article/details/26066409https://blog.csdn.net/yang_yulei/article/details/26104921https://blog.csdn.net/zhichaosong/article/details/88844371二分查找前提是有序,且静止不变。...转载 2019-08-08 14:55:18 · 272 阅读 · 0 评论