码迷,mamicode.com
首页 >  
搜索关键字:两个指针    ( 1059个结果
hdu 3374 String Problem (kmp+最大最小表示法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374题目大意:输出最大和最小的是从哪一位开始的,同时输出最小循环节的个数。这里简单介绍对字符串最小表示的方法:(1) 利用两个指针p1, p2。初始化时p1指向s[0], p2指向s[1]。(2) k ...
分类:其他好文   时间:2014-08-10 12:52:50    阅读次数:244
Linked List Cycle && Linked List Cycle II
说明:两个指针不同步长。 说明:在上题基础上,将一个指针放到链表头,步长都设为1,相遇节点。(可以计算)
分类:其他好文   时间:2014-08-10 03:53:49    阅读次数:222
Sort List && Insertion Sort List (链表排序总结)
说明:归并排序: 时间 O(nlogn),空间 O(1). 每次将链表一分为二, 然后再合并。快排(用两个指针) 说明: 与顺序表不同的时,每次找插入位置时从头开始走。
分类:其他好文   时间:2014-08-10 01:40:39    阅读次数:226
判断链表是否有环及环入口点的求法(Linked List Cycle II )
分为两步 第一步 还是利用快慢指针,如果有环的话在利用快慢指针终会相会于一个节点。 第二步。然后从这节点出发每次出发走一步,同时从根节点出发每次出发也走一步则他们两个指针相遇的地方就是环的入口。 第一步好解释那么第二步是为什么呢? 网上有很多解法大都是从数学的角度来分析,有公式也有推算很不直观,我从图形的角度来看的话就相对理解起来简单很多。 将图摊开成一条线,假设我们有环而且...
分类:其他好文   时间:2014-08-09 02:40:07    阅读次数:309
Remove Nth Node From End of List
这道题可以用双指针的方法解,将两个指针p,q的距离保持在n-1,然后移动q到List的最后一个元素,那么此时p指向的便是the Nth node from the end。要删除这个node,要分两种情况,一种是该node为head,另一种该node是中间node。对于第一种情况,可以简单的采用以下...
分类:其他好文   时间:2014-08-07 18:19:10    阅读次数:176
排序之 快速排序
采用算法导论上的实现方式,用java实现。快排算法核心的部分便是partition过程,这里的partition采取最后一个元素作为pivot,i和j两个指针都从头向后扫描,如下图所示,数组被分为4个部分。算法执行的过程:代码实现:import java.util.Arrays;public cla...
分类:其他好文   时间:2014-08-07 18:05:30    阅读次数:196
算法题:复制复杂链表之空间换时间法
题目:复制一个复杂链表,所谓复杂链表指的是每个节点含有两个指针,一个指向单链表的下一个结点,一个指向单链表中的任意某个结点,或者该指针为空。 为了方便起见,我们将待复制的链表称为原型链表,将复制后的新链表称为复制链表,将指向下一个结点的指针定义为next指针,指向其他位置的指针定义为any指针。《剑指offer》上给出了三种解决方法:(1)常规法;(2)空间换时间法;(3)紧随复制法。书上并给出了第三种方法的实现代码。这里我根据书上的提示,给出第二种方法的代码。...
分类:其他好文   时间:2014-08-05 22:45:00    阅读次数:346
算法题:求链表倒数第K个结点
题目:给出一个单链表,返回倒数第K个结点,最后一个结点为倒数第1个。 《剑指offer》上面给的解法是设置两个指针,这里记为p1、p2,先让p2走(k-1)步,然后p1、p2同时走,当p2走到最后一个结点时,p1所指向的结点就是倒数第k个结点。 我觉得按照这样的逻辑写代码反而更容易出错,因为我们需要把我两件重要的问题:(1).p2先走(k-1)步;(2)循环结束的条件是p2到达最后一个结点,即p2->next==NULL。显然这样不太容易控制,我的想法是:先让p2先走k步,然后p...
分类:其他好文   时间:2014-08-04 14:22:17    阅读次数:232
求链表倒数第几个节点
使用两个指针,和判断一个链表是否形成环类似 代码: #include #include using namespace std; typedef struct node { int data; struct node *next ; }Node,*pNode; void creatNode( pNode &pHead ){ bool isFirst=true; pNode p...
分类:其他好文   时间:2014-08-04 06:14:16    阅读次数:194
智能指针
C++中智能指针可以防止出现野指针、内存泄露等情况,智能指针的类中包含4个函数:构造函数、拷贝构造函数、重载复制操作符、析构函数。构造函数需要对引用计数和指针进行初始化,引用计数初始化为1,拷贝构造函数完成对象之间的拷贝,要注意引用计数的变化和判断两个指针是否指向相同的内存。重载复制操作符,需要判断的情况是左值代表的指针如果引用计数减为0,要释放相应的内存,避免发生内存泄露。析构函数中先判断引用计...
分类:其他好文   时间:2014-07-30 01:02:42    阅读次数:199
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!