随笔分类 -  剑指offer

摘要:题目 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。 考点思路代码/** * Definition for singly-linked list with a random pointer. * ... 阅读全文
posted @ 2019-02-14 23:50 lightmare 阅读(141) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ ... 阅读全文
posted @ 2019-02-13 00:09 lightmare 阅读(108) 评论(0) 推荐(0)
摘要:题目给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 ... 阅读全文
posted @ 2019-02-12 23:59 lightmare 阅读(122) 评论(0) 推荐(0)
摘要:题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 考点1.BST 二叉搜索树2.递归 思路 1.后序遍历,根节点是序列的最后一个。2.BST中左子树的值比根节点小,如果... 阅读全文
posted @ 2019-02-12 03:33 lightmare 阅读(306) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯... 阅读全文
posted @ 2019-02-09 10:18 lightmare 阅读(248) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,... 阅读全文
posted @ 2019-02-09 10:18 lightmare 阅读(168) 评论(0) 推荐(0)
摘要:题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。考点1.广度优先遍历2.binary tree3.queue4.deque 思路按层打印:8、6、10、5、7、9、11 用STL的deque完成两端进出的操作。规律:1.从头节点开始放入容器。2.每次打印... 阅读全文
posted @ 2019-02-09 10:11 lightmare 阅读(174) 评论(0) 推荐(0)
摘要:题目给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。 示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,... 阅读全文
posted @ 2019-02-08 21:37 lightmare 阅读(153) 评论(0) 推荐(0)
摘要:设计一个支持 push,pop,top 操作,并能在O(1)时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack... 阅读全文
posted @ 2019-02-08 13:22 lightmare 阅读(212) 评论(0) 推荐(0)
摘要:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ ... 阅读全文
posted @ 2019-02-08 12:03 lightmare 阅读(235) 评论(0) 推荐(0)
摘要:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ ... 阅读全文
posted @ 2019-02-07 20:32 lightmare 阅读(163) 评论(0) 推荐(0)
摘要:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1 思路如果根节点存在,就交换两个子树的根节点,用递归,从下... 阅读全文
posted @ 2019-02-07 19:26 lightmare 阅读(134) 评论(0) 推荐(0)
摘要:题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 ... 阅读全文
posted @ 2019-02-07 15:53 lightmare 阅读(172) 评论(0) 推荐(0)
摘要:题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 测试用例// list1: 1->3->5// list2: 2->4->6void Test1(){ ListNode* pNode1 = CreateLis... 阅读全文
posted @ 2019-02-07 11:52 lightmare 阅读(149) 评论(0) 推荐(0)
摘要:题目描述输入一个链表,反转链表后,输出新链表的表头。 测试用例// 输入的链表有多个结点void Test1(){ ListNode* pNode1 = CreateListNode(1); ListNode* pNode2 = CreateListNod... 阅读全文
posted @ 2019-02-07 08:48 lightmare 阅读(143) 评论(0) 推荐(0)
摘要:题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。考点1.鲁棒性:存在环;不为空链表;指针下一个节点存在时才往下走。2.复杂问题分解成简单问题 。 思路1.判断链表中存在环:两个指针,同时从头节点出发,fast的走两步,slow的走一步... 阅读全文
posted @ 2019-02-06 23:36 lightmare 阅读(150) 评论(0) 推荐(0)
摘要:题目描述题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。 考点鲁棒性:指针为nu... 阅读全文
posted @ 2019-02-06 18:45 lightmare 阅读(165) 评论(0) 推荐(0)
摘要:第一题题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 方法一 第一遍void ReorderOddEven_1(int *pData, u... 阅读全文
posted @ 2019-02-06 15:50 lightmare 阅读(244) 评论(0) 推荐(0)
摘要:题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。测试用例: ... 阅读全文
posted @ 2019-02-05 22:12 lightmare 阅读(228) 评论(0) 推荐(0)
摘要:题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是... 阅读全文
posted @ 2019-02-05 14:14 lightmare 阅读(318) 评论(0) 推荐(0)