- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 程序员面试宝典(33)-在O(1)时间删除链表结点
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext; };函数的声明如下:void DeleteNode(ListNode* pListHead,ListNode* pToBeDeleted);分析:在链表中删除一个结点,最常规的做法是从
2015-05-04 19:59:59 404
原创 程序员面试宝典(34)-找出数组中两个只出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等
2015-05-04 18:23:16 496
原创 剑指offer面试第15题:链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6.这个链表的倒数第3个结点是值为4的结点。思路分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开
2015-05-03 17:25:41 445
原创 程序员面试宝典(19)-反转链表
题目输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:struct ListNode { int m_nKey; ListNode* m_pNext; };分析为了正确地反转一个链表,需要调整指针的指向。与指针操作相关代码总是容易出错的,因此最好在动手写程序之前作全面的分析。为了将调整指针这个复杂的过程分析清楚,我们可以借助图形来直观地
2015-05-03 15:39:06 895
Ajax实现在线聊天
2015-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人