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