剑指offer04-重建二叉树
摘要:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:前序遍历,第一个节点为二叉树root;中序遍历,左中右,
阅读全文
剑指offer03-从尾到头打印链表
摘要:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 思路:从前往后访问链表过程用stack保存元素,弹出过程用vector保存 vector<int> printListFromTailToHead(ListNode* head) { stack<int>s; vector<int>va
阅读全文
剑指offer02-替换空格
摘要:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:计算空格个数;从后向前移动字符和插入字符;时间复杂度O(n) void replaceSpace(char *str,int leng
阅读全文
剑指offer01-二维数组中的查找
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:将数组左下角元素作为起点,沿着右侧递增,沿着上侧递减;查找参考搜索二叉树;平均时间代价为l
阅读全文