首页 > TAG信息列表 > 从头再来

《如果》

如果周围的人毫无理性地向你发难 你仍能镇定自若保持冷静 如果众人对你心存猜忌 你仍能自信如常并认为他们的猜忌情有可原 如果你肯耐心等待不急不躁 或遭人诽谤却不以牙还牙 或遭人憎恨却不以恶报恶 既不装腔作势 亦不气盛趾高 如果你有梦想 而又不为梦主宰 如果你有神思 而又不

《从头再来》面试题02.03 删除中间节点

若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f   奇奇怪怪的一道题...要删除

《从头再来》剑指offer.03 数组中重复的数字

找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 很简答的一道题,直接借助哈希表来完成即可。也就是遍历整个数组,将每一个数字

《从头再来》剑指offer.55I 二叉树的深度

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 利用dfs算法一直向下找寻,直到根结点后返回。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode

《从头再来》剑指offer.54 二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第k大的节点。 我们需要明确一点,二叉搜索树的中序遍历即使一个从小到大的序列,所以找出的k大节点的话,我们可以直接对二叉搜索树进行中序遍历后,再来输出第k大即可。 /** * Definition for a binary tree node. * struct TreeNode { * int val;

《从头再来》剑指offer.32III 从上到下打印二叉树

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 由于需要对偶数层的节点进行反向输出,所以我们想到借助双端队列来完成反向的操作。其他的操作和前两题没什么区别,主要的区别就

《从头再来》剑指offer.27 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。 二叉树的问题,基本都靠递归来解决! 所以总体思路是:递归的交换每一个节点的左右子节点,当然后从根部向上交换。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

《从头再来》剑指offer.26 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)(注意分辨,树的子树和树的子结构是不一样的!树的子树必须到根结点都满足完全一样,而子结构可以只是子树的一部分) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如:给定的树 A:      3    / \ 

《从头再来》剑指offer.30 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 本题的难度在于实现min的时间复杂度为1,题意是当调用min的时候,返回当前栈的最小元素,那么最小元素除非在栈顶,不然遍历栈的时间复杂度肯定不是O(1),所以

《从头再来》剑指offer.09 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 如果学过一点基础的数据结构的话,我们可以知道队列和栈是两个不同的概念。 队列讲究的是F