实现链表的nlgn时间排序,常数空间。想了想,符合那个时间复杂度的也就快排,堆,归并。一想到快排的最坏也是n方,就放弃了,堆的话貌似起码要组成堆要左右两个指针构建才比较方便。然后就觉得应该是要用归并了。还是看了JustDOIT大神的。自己也敲了一下。利用快慢指针找到中间,分成两个链表,然后递归,然后...
分类:
其他好文 时间:
2014-12-17 00:04:19
阅读次数:
268
题目:输入一个链表,输出链表中倒数第k个节点,为了符合大多数人的习惯,本题从1开始计数,即链表的尾巴节点是倒数第一个节点。
方法1:先遍历链表得到链表的个数n,倒数第k个节点就是n-k+1再遍历一次链表,找到第n-k+1个节点就是倒数第k个节点;这种方法遍历两次链表;
方法2:先遍历链表把链表压入一个栈,再出栈,第k次出栈就是第k个节点;
方法3:先反转链表,再遍历
方法4:定义两个指针,...
分类:
编程语言 时间:
2014-12-16 17:14:23
阅读次数:
153
解析:设立两个指针,p每次移动两下,q每次只移动一下,那么当p指向最后一个节点的时候,那么q就是中间的节点了
ListNode* FindMidNode(ListNode* pHead)
{
if (pHead == NULL)
{
return NULL;
}
if (pHead->m_pNext == NULL || pHead->m_pNext->m_pNext =...
分类:
编程语言 时间:
2014-12-16 17:13:52
阅读次数:
181
解析:设立两个指针,p每次移动两下,q每次只移动一下,那么当p指向最后一个节点的时候,那么q就是中间的节点了ListNode* FindMidNode(ListNode* pHead){ if (pHead == NULL) { return NULL; } if (pHead->m_pNext ....
分类:
编程语言 时间:
2014-12-16 13:08:52
阅读次数:
202
这次是算法中最常用的快速排序,常备成为快排,这里是头尾两个指针的算法。
//快速排序
#include
#include
using namespace std;
int partition(int *Array, int i, int j)
{
int t = *(Array + 1);
while(i
{
while(i = t)
{
j--;
}
if(i ...
分类:
其他好文 时间:
2014-12-14 22:45:13
阅读次数:
160
1、一个整数数组,把非0的整数移到左边,对整数的顺序不做要求。写一个函数实现,并返回数组的非0整数个数。不使用额外的存储。比如:初始数组为:[ 1, 0, 2, 0, 0, 3, 4 ],处理后的数组是:[ 4, 1, 3, 2, 0, 0, 0 ],函数返回非0整数的个数4。解答:两个指针,一个从...
分类:
编程语言 时间:
2014-12-12 18:55:53
阅读次数:
221
首先,判断一个链表是否有环?对于这个问题:可以用两个指针,刚开始都指向头节点,然后一个指针每次向后移一步,另一个指针每次向后移两步,如果最后移两步的指针为空时,说明无环,如果最后两个指针相等,说明有环。如果把第一指针看成静止,则相当于第二个每次走一步,所以在那个环上时,是一定能相遇的。如何找到这个链...
分类:
其他好文 时间:
2014-12-12 11:26:48
阅读次数:
125
13.7写一个函数,其中一个参数是指向Node结构的指针,返回传入数据结构的一份完全拷贝。 Node结构包含两个指针,指向另外两个Node。C++实现代码:typedef map NodeMap;Node* copy_recursive(Node *cur, NodeMap &nodeMap){ ....
分类:
编程语言 时间:
2014-12-11 13:40:10
阅读次数:
151
原文: 一步一步写算法(之排序二叉树) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们讲过双向链表的数据结构。每一个循环节点有两个指针,一个指向前面一个节点,一个指向后继节点,这样所有的节点像一颗颗珍珠一样被一根线穿在了一起。然而今天...
分类:
编程语言 时间:
2014-12-11 10:01:54
阅读次数:
157
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。
算法描述
归并操作的过程如下:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针到达序列尾将另...
分类:
编程语言 时间:
2014-12-08 23:04:54
阅读次数:
226