随笔分类 -  剑指offer题目

摘要:题目:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 阅读全文
posted @ 2016-09-07 17:05 没长大的书生 阅读(172) 评论(0) 推荐(0)
摘要:题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 阅读全文
posted @ 2016-09-07 15:44 没长大的书生 阅读(194) 评论(0) 推荐(0)
摘要:题目:输入一个vector数组,数组里面有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 阅读全文
posted @ 2016-08-26 15:28 没长大的书生 阅读(179) 评论(0) 推荐(0)
摘要:题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 阅读全文
posted @ 2016-08-26 15:09 没长大的书生 阅读(201) 评论(0) 推荐(0)
摘要:题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 分析:数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有 阅读全文
posted @ 2016-08-24 16:37 没长大的书生 阅读(587) 评论(0) 推荐(0)
摘要:题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。 复杂链表的结构如下: 代码如下: 阅读全文
posted @ 2016-08-24 10:09 没长大的书生 阅读(143) 评论(2) 推荐(0)
摘要:题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 树结构的定义如下: 解析:由于路径是从根节点出发到叶节点,也就是说路径总是以根节点为起始点,因此我们需要遍历根节点。在二叉树的前序、中序、后序遍历中,只 阅读全文
posted @ 2016-08-24 09:52 没长大的书生 阅读(245) 评论(2) 推荐(0)
摘要:题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 分析:在后序遍历中,最后一个数字是树的根节点的值。数组中前面的数字可以分为两个部分,第一个部分是左子树节点的值,他们都比根节点的值小;第二个部分是右 阅读全文
posted @ 2016-08-19 15:42 没长大的书生 阅读(140) 评论(0) 推荐(0)
摘要:从上往下打印二叉树的每一个节点,同一层的节点按照从左至右的顺序打印,二叉树节点的数据结构如下: 二叉树的广度优先遍历,用一个队列就可以解决: 阅读全文
posted @ 2016-08-19 11:42 没长大的书生 阅读(126) 评论(0) 推荐(0)
摘要:题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等 阅读全文
posted @ 2016-08-19 10:41 没长大的书生 阅读(107) 评论(0) 推荐(0)
摘要:题目:定义栈的数据结构,请在该类中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push、及pop的时间复杂度都是O(1)。 分析:要得到当前栈中最小的元素,可以另开辟一个栈,这个栈(下面以minData代替)和原始栈(下面用Data代替)保持同步,minData的顶部元素一直是当 阅读全文
posted @ 2016-08-18 17:19 没长大的书生 阅读(125) 评论(0) 推荐(0)
摘要:题目:操作给定的二叉树,将其变换为源二叉树的镜像。 例如下所示 阅读全文
posted @ 2016-08-18 16:37 没长大的书生 阅读(138) 评论(0) 推荐(0)
摘要:题目:输入两颗二叉树A和B,判断B是不是A的子结构。二叉树的定义如下: 代码如下: 阅读全文
posted @ 2016-08-18 12:45 没长大的书生 阅读(142) 评论(0) 推荐(0)
摘要:题目:输入两个递增的排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增顺序的。链表的结构如下: struct ListNode{ int m_nValue; ListNode* m_pNext; } 阅读全文
posted @ 2016-08-17 21:27 没长大的书生 阅读(149) 评论(0) 推荐(0)
摘要:题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义如下: 解析:注意的问题1、输入链表的头指针为NULL或者整个链表只有一个节点时,程序会崩溃;2、输入的链表只有一个节点;3、反转后链表出现断裂;4、对链表指针的操作顺序 阅读全文
posted @ 2016-08-17 17:33 没长大的书生 阅读(155) 评论(0) 推荐(0)
摘要:题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如一个链表有6个节点,从头节点开始它们的值一次是1,2,3,4,5,6。这个链表的倒数第三个节点是值为4的节点。 链表节点定义如下: struct ListNode{ int 阅读全文
posted @ 2016-08-17 16:41 没长大的书生 阅读(208) 评论(0) 推荐(0)
摘要:题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 方法一:可以用两个指针,分别指向数组的前后(下面称两个指针为头指针和尾指针),头指针向下遍历,遇到偶数时停下,尾指针从尾向前遍历,直到遇到一个奇数,交换当前头尾指针所指的值,之 阅读全文
posted @ 2016-08-17 15:51 没长大的书生 阅读(212) 评论(0) 推荐(0)
摘要:题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1),时间删除该节点。链表节点与函数的定义如下: struct ListNode{ int m_nValue; ListNode* m_pNext; } void DeleteNode(ListNode** pListHead,ListNo 阅读全文
posted @ 2016-08-17 15:16 没长大的书生 阅读(209) 评论(0) 推荐(0)
摘要:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数的问题。 在写代码的时候要考虑完全各种情况,对于代码的完整性,从三个方面考虑:功能、边界、负面,同时还要考虑对于异常的处理。在这道题中,主要有下面 阅读全文
posted @ 2016-08-16 15:40 没长大的书生 阅读(188) 评论(0) 推荐(0)
摘要:请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数。 解法一:要知道整数二进制表示中1的个数,可以先让该数与1做与操作,判断最后一位是否为1;之后再将1左移1位变为2,再和原数做与操作,判断原数倒数第二为是否为1,这样经过32此操作(整数4个字节,32位),便可以得到该数中1的个数。 解法 阅读全文
posted @ 2016-08-16 11:31 没长大的书生 阅读(271) 评论(0) 推荐(0)