剑指
MakaloLi
这个作者很懒,什么都没留下…
展开
-
【剑指OFFER】反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头。 算法思路 用两个指针current和previous。current遍历链表,previous指向current在反转前链表中的前一个结点。将current和previous的next指针反转,当current->next = nullptr时,该节点为反转链表的头节点。 C++代码 /* struct ListNode { int ...原创 2019-02-15 16:45:33 · 190 阅读 · 1 评论 -
【剑指OFFER】包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 算法设计 题目中要求min函数时间复杂度为O(1),也就说明要求在push的过程中就存下最小值。要注意的是,如果最小值被弹出后,min要变为次小值。因此要借助一个辅助栈来存储每次压入一个新数字的时候,栈中的最小值。 步骤: push时,min_stack中压入min{value, m...原创 2019-02-16 21:41:21 · 95 阅读 · 0 评论 -
【剑指OFFER】从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 算法设计 有点类似于BFS的思想,借助一个队列来实现。从根节点开始,依次将将结点、左结点、右结点压入队列中,再从队头开始输出结点值。 C++代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...原创 2019-02-17 12:32:34 · 97 阅读 · 0 评论 -
【剑指OFFER】二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 示例一: 输入:5, 7, 6, 9, 11, 10, 8 输出:true 示例二: 输入:7, 4, 6, 5 输出:false 算法设计 二叉搜索树的特点是左子树的值全都小于根节点,右子树的值全都大于根节点。这题只需要根据这一特点判断即可。 C+...原创 2019-02-17 15:30:47 · 101 阅读 · 0 评论 -
【剑指OFFER】二叉树中和为某一值的路径
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 算法设计 用深度搜索,逐个遍历二叉树的结点。要注意的是题目中说,路径是从树的根结点开始往下一直到叶节点,因此如果还未到叶节点,值的和就与expectNumber相等的话是不能算做一个正确...原创 2019-02-17 16:14:03 · 87 阅读 · 0 评论