面试题
文章平均质量分 77
蓝小古
独学而无友,则孤陋而寡闻
展开
-
01二叉查找树转化成双向链表
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。#include using namespace std;#define MAX 10struct BSTreeNode{ int m_nValue; // value of node BSTreeNode *m_pLeft; // left chil原创 2015-07-23 13:34:49 · 310 阅读 · 2 评论 -
02设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)思路:元素结构里包含一个min域,表示当前元素压栈后,当前栈内的最小元素的值。#include using namespace std;#define STACK_SIZE 10class StackElement {public: St原创 2015-07-23 16:05:58 · 296 阅读 · 1 评论 -
03寻找子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。动态规划的思路:用sum[i]表示以i为结尾的子串中最大的和,那么数组中a[i+1]要么加到前面子串的末尾,要么重新生成一个新的子串作为开头。因此sum[i]=max(sum[i]+a[i+1], a[i+1])。最后的结果是sum数原创 2015-07-24 15:57:02 · 381 阅读 · 1 评论 -
算法题1:蛇形打印矩阵
// Snake.cpp//////////// n=3:// 1 2 6// 3 5 7// 4 8 9//////////// n=4:// 1 2 6 7// 3 5 8 13// 4 9 12 14// 10 11 15 16原创 2015-08-18 21:19:03 · 504 阅读 · 0 评论