
剑指offer
文章平均质量分 78
xiaofei2010
艰苦的奋斗
展开
-
剑指offer:31-连续子数组的最大和
分析: 方法一:分治法 使用分治法解决最长连续子序列和包含4个步骤: 1.递归计算整个序列前半部分最长连续子序列; 2.递归计算整个序列后半部分最长连续子序列; 3.计算从前半部分开始,但在后半部分结束的最长子序列的和; 4.选择上面三种情况的最大值,作为整个问题的解。 代码如下: #include using namespace std; //求三个数中最大值. int原创 2013-05-21 10:20:21 · 1228 阅读 · 0 评论 -
剑指offer:3-二维数组中的查找
代码如下: #include using namespace std; /* //版本1:从二维数组右上角开始比较 //从一个二维数组matrix中查找数字number,数组总行数为rows,总列数为columns. bool find_number_from_array(int *matrix,int rows,int columns,int number) { bool found =原创 2013-05-07 23:59:21 · 785 阅读 · 0 评论 -
剑指offer:6-重建二叉树
二叉树的遍历方式:前序、中序和后序。每种遍历均有递归和循环两种不同方法。递归实现要比循环简洁。 直接上代码: 二叉树节点结构: (下面参考原书代码) //BinaryTreeNode.h #ifndef BINARY_TREE_NODE_H #define BINARY_TREE_NODE_H struct BinaryTreeNode { int nValue; Binary转载 2013-05-12 21:22:20 · 1343 阅读 · 0 评论 -
剑指offer:5-从尾到头打印链表
代码如下: //题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 #include #include #include using namespace std; //链表节点结构. struct ListNode { int m_nKey; ListNode *m_pNext; }; //创建一个链表结点 ListNode* create_list_node(int转载 2013-05-08 23:02:05 · 765 阅读 · 0 评论 -
剑指offer:4-替换空格
代码如下: /*题目:实现一个函数,把字符串中的每个空格替换成“%20”。 例如输入“we are happy.”,则输出“we%20are%20happy.”。*/ /* 思路: 0.使用每个空格表示一个字符。 1.遍历字符串,求出空格数目。 2.计算当前字符串总长度,包括'\0'。 3.计算替换后需要的长度(增加空间:空格数*2)。 4.创建两个指针分别指向当前字符串末尾和替换后的字符原创 2013-05-08 16:37:48 · 864 阅读 · 0 评论 -
剑指offer:7-用两个栈实现队列
栈是常见的数据结构,在计算机领域广泛使用,如OS会给每个线程创建一个栈用来存储函数调用时各个函数的参数、返回地址及临时变量等。特点是:后进先出。 删除操作: stack2中元素弹出顺序刚好是stack1中元素进入顺序。故在删除元素时: 1>先判断stack2是否为空,若其不为空,则从中弹出元素;若为空,则将stack1中元素依次弹出并存入stack2中。 2>重复步骤1。 插入操原创 2013-05-13 21:12:23 · 977 阅读 · 0 评论