![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
文章平均质量分 80
迷雾江湖
奋斗中的菜鸟程序员
展开
-
在一个行和列都为升序的二维数组中找一个数字
一、问题描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。 例如: 二维数组: 1 2 8 9 2 4 9 12原创 2018-01-02 16:50:43 · 945 阅读 · 0 评论 -
替换字符串中的空格
一、题目描述: 请实现一个函数,把字符串中的每个空格替换成 "%20"。例如输入"I love you.", 则输出"I%20love%20you."。并且时间复杂度为O(n)。二、解题思路: 我们最容易想到的解决方案是:从头开始遍历字符串,遇到空格,则将其后面的所有字符向后移动3个字符位置。但我们发现,在移动的过程中一部分字符移动了多次。这并不符合时间原创 2018-01-02 22:24:17 · 591 阅读 · 0 评论 -
逆向打印单向链表的所有结点
一、题目描述: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 链表结点定义如下: struct ListNode { int m_nKey; ListNode *m_pNext; };原创 2018-01-04 19:24:51 · 494 阅读 · 0 评论 -
根据给定先序和中序序列来重建二叉树
一、问题描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。如果输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,15,38,6},则重建出对应的二叉树。二叉树结点的定义如下: struct BinaryTreeNode {原创 2018-01-04 21:41:40 · 1002 阅读 · 0 评论 -
使用两个栈来实现队列
一、问题描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入借点 和在队列头部删除结点的功能。 template class MyQueue { public: MyQueue(void);原创 2018-01-05 11:39:42 · 243 阅读 · 0 评论 -
旋转数组中最小数字
一、题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1 。二、题目分析: 这道题最直观的解法即从头到尾遍历一遍数组,我们就能找出最小的元素。但这种方法的时间复杂度显然是O原创 2018-01-05 22:13:57 · 420 阅读 · 0 评论