编程-剑指offer
文章平均质量分 53
我从崖边跌落
这个作者很懒,什么都没留下…
展开
-
【编程-剑指offer】打印链表
【编程-剑指offer】打印链表题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。知识点: 链表解题思路将链表读出来放在ArrayList,这里使用的是vector 容器对象。要使按链表值从尾到头的顺序返回,根据vector的特性,可使用一个vector,也可使用两个。 1、使用两个vector: 1)将链表中值顺序读到一个vect...原创 2018-08-28 09:40:08 · 144 阅读 · 0 评论 -
【剑指offer】二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向解题思路:首先,理清思路: 1、二叉搜索树的中序遍历是一个排序的递增序列; 2、双向链表的left指向比当前节点小的值,right指向比当前节点大的值。找到中序遍历序列并在当前节点的位置改变链表的指向。代码:/...原创 2019-04-29 16:32:20 · 111 阅读 · 0 评论 -
【编程-剑指offer】链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点。解题思路: 这道题也很有趣,我们当然可以两重遍历链表,第一次找到链表的长度l,第二再根据链表的长度l和k的差值计算出倒数第k个节点正向顺序,从而得到所求的结点。但是有没有更简单或者代价更小得方法? 用两个指针,用差值的方法来求倒数第k个个节点 开辟两个指针,使得两个指针之间相隔k个节点。(第一个节点...原创 2018-12-19 10:55:20 · 73 阅读 · 0 评论 -
【编程-剑指offer】调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解法:这道题很有意思,有很多种解法:1、重新开辟一个数组存原数组中的偶数。循环判断数组中的数,如果该数是偶数,则释放它,将它压入b中,如果该数是奇数,则什么都不做。这样array中就只剩下奇数,b中全是偶数。将...原创 2018-12-19 10:30:19 · 80 阅读 · 0 评论 -
【编程-剑指offer】二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路: 1. 二叉搜索树:左子树永远比右子树小 2. 后序遍历:最后访问根节点由上述两点可知:后序遍历序列的最后是根节点,可以将前面的部分分为比它小的左子树和比它大的右子树。1、递归: ...原创 2018-12-24 14:34:48 · 105 阅读 · 0 评论 -
【编程-剑指offer】复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路:注意:对于这样的复杂链表,也许刚开始你会认为只要直接进行复制就行,第一次复制节点和next指针,第二次进行双重循环,找到random指针所指的节点并赋值给当前...原创 2018-12-26 17:18:55 · 72 阅读 · 0 评论 -
【编程-剑指offer】栈的压入、弹出序列
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路: 找一个栈stack模拟题中栈的压入和弹...原创 2018-12-20 22:09:23 · 91 阅读 · 0 评论 -
【编程-剑指offer】反转链表
题目:输入一个链表,反转链表后,输出新链表的表头。解题思路:题目不难,但关键是要理清思路,否则很容易在很多小地方出错。 这道题目我们的总体思路就是正向读链表,逆向插链表。我们需要三个变量: 1)首先,我们将当前节点的下一个节点存储起来。(q) 2)设置一个为空的头节点(mHead)来存储逆序的链表,让当前节点(pHead)的next指向头...原创 2018-12-19 17:12:33 · 114 阅读 · 0 评论 -
【编程-剑指offer】跳台阶问题(递归、动态规划)
4、跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 该问题课可以引申为 问题1:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 问题2:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 问题3:一只青蛙...原创 2018-09-05 11:28:23 · 197 阅读 · 0 评论 -
【编程-剑指offer】替换空格
2、替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。知识点 字符串解题思路将长度为1的空格替换成长度为3的“%20”。 1、如果允许用新数组来存放替换空格后的字符串,则可直接进行遍历 用两个指针分别指向两个字符串,...原创 2018-08-25 23:25:18 · 96 阅读 · 0 评论 -
【编程-剑指offer】重建二叉树
3、重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。。知识点: 二叉树遍历解题思路输入的是前序遍历及中序遍历的结果,如示例: 前序 : 1 2 4 7 3 ...原创 2018-08-28 21:56:10 · 97 阅读 · 0 评论