Sort a linked list inO(nlogn) time using constant space complexity.本题利用归并排序即可归并排序的核心是将两部分合成一部分,故开始要将链表分成两部分,利用快慢两个指针,当快指针跑到链表尾部时,慢指针恰好在中间,故可以将链表分成两部分然...
分类:
其他好文 时间:
2014-06-21 12:20:11
阅读次数:
188
Linked List Cycle:Given a linked list, determine if
it has a cycle in it.Follow up:Can you solve it without using extra
space?解题分析:大致思想就是设置两个指针,一个指针每次...
分类:
其他好文 时间:
2014-06-13 14:41:54
阅读次数:
238
链表的分类:
单链表:
双链表:
每一个节点有两个指针域
循环链表:
能通过任何一个节点找到其它所有的结点
非循环链表:
算法:
遍历
查找
清空
销毁
求长度
排序
删除节点
插入节点
下面举个例子
例1:
{CSDN:C...
分类:
其他好文 时间:
2014-06-10 06:58:23
阅读次数:
244
c++对象模型保证,main()之前构造出来要用的对象c++中成员函数
不在对象之类,多个对象只有个副本,虚函数会增大大小编译器会在构造函数最前面,插入成员队象构造函数来初始化成员对象,放置vitual table
地址。类有多个虚函数的大小与一个是一样的,我电脑上是8个字节,两个指针吗当一个基类被...
分类:
编程语言 时间:
2014-06-09 22:26:15
阅读次数:
301
1.维护两个指针,一个指向第一个
,向右移动,一个指向最后一个元素,向左移动。当第一个指针指向为偶数,第二个为奇数,就进行交换并移动指针。
注意:当输入为Null或者length=0时候的情况。#include "stdafx.h"#include using namespace std;void
...
分类:
其他好文 时间:
2014-06-09 21:20:21
阅读次数:
224
题目:输入一个链表,输出改链表倒数第K个结点。分析:常规方法可能就是,先遍历一遍链表,找到链表长度length,那么我们只需要第二次遍历length-k+1个结点就可以找到倒数第k个结点。
比较好的方法是采用两个指针,让一个指针先走K-1步,后面的指针再跟上。这样只需要遍历一遍。注意:1.提高...
分类:
其他好文 时间:
2014-06-09 16:35:50
阅读次数:
396
我们都知道两个指针指向同一个变量时如果一个指针被释放那么另一个就会出问题为了说明问题我做了一个很恶心的小例子class C{public : C(int v)
{ ptrInt=new int; *ptrInt=v; valueInt = v; ...
分类:
编程语言 时间:
2014-06-09 16:11:08
阅读次数:
319
题目:输入一个链表,输出该链表中倒数第k个结点 (注意:我们将链表最末一个结点记为
倒数第1个结点,也就是k从1开始计数)解题分析:方法一:遍历链表两次,第一次统计链表结点个数,第二次遍历就可以找到倒数第K个结点方法二:遍历链表一次我们使用两个指针,第一个指针从链表的头指针开始遍历向前走k-1步,第...
分类:
其他好文 时间:
2014-06-09 13:08:20
阅读次数:
246
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
单链表的局限
1,单链表的结点都只有一个指向下一个结点的指针
2,单链表的数据元素无法直接访问其前驱元素
3,逆序访问单链表中的元素是极其耗时的操作...
分类:
编程语言 时间:
2014-06-08 02:16:06
阅读次数:
352
题目 :Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
解题思路:
给出一个数组合一个数,如果两个数的和等于所给的数,求出该两个数所在数组中的位置。
这个题也挺常见的,就是两个指针,从前后两个方向扫描。但是本题有以下几个需要的点:
1. 所给数组不是有序的;
2. 返回的下标是从1开始的,并且是原来无序数组中的下标;
3. 输入数组中可能含有重复的元素。
好了,把以上三点想到的话,做这个题应该不会有啥问题。
具体方法:把原...
分类:
其他好文 时间:
2014-06-08 02:14:06
阅读次数:
250