剑指offer js实现
记录一下个人认为值得记录的题目(都用js实现)
jiuzhi_
这个作者很懒,什么都没留下…
展开
-
剑指思路3~6
文章目录数组中的重复数字最终还是决定二刷剑指了,顺便记录一下思路(js实现),加深印象,大概按一周一篇的速度发一下数组中的重复数字原创 2020-08-16 00:55:50 · 78 阅读 · 0 评论 -
08 判断栈的出栈序列
文章目录思路代码实现问题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列(注意:这两个序列的长度是相等的)思路建立一个辅助栈,把输入的第一个序列中的数字依次压入辅助栈,并按照第二个序列的顺序一次从该栈中弹出数字eg:入栈顺序:1,2,3,4,5;出栈顺序:4,5,3,2,1。进栈出栈原创 2020-05-13 15:13:34 · 431 阅读 · 0 评论 -
07 树的子结构
文章目录思路代码实现问题:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路在树A中找到跟树B根结点值一样的结点R判断树A中以R为根结点的子树是否包含和树B一样的结构代码实现/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} *///找到根结点值相等的结点Rfunction HasSubtree(pRoot1, pR原创 2020-05-12 22:18:18 · 82 阅读 · 0 评论 -
06 旋转数组中的最小数字
文章目录旋转数组思路代码实现题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1旋转数组经观察,旋转数组实际上可以划分为两个排序的子数组,前面数组的元素都大于或等于后面数组的元素,且最小的元素刚好是两个数组的分界符思路因为本题给的数组一定程度上是排序的,所以我们可以使用类似二分查找法的思路来解决问题用两个指针分别指向第一个元素和最后原创 2020-05-12 21:40:29 · 112 阅读 · 0 评论 -
05 合并两个排序链表
文章目录思路代码实现题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则思路题目要得到单调不减的链表,即相邻结点可以相等或者后一结点大于前一结点确定头结点,比较两个链表的头结点,小的即为结果链表的头结点,假设此处为link1link1指针后移,link2指针位置不变,再次比较,数值小的连接在结果链表上以此类推,利用递归调用,直到某一链表到达尾部,将另一链表直接接在结果链表上代码实现/*function ListNode(x){ this原创 2020-05-10 17:55:08 · 89 阅读 · 0 评论 -
04 反转链表
文章目录思路代码实现题目:输入一个链表,反转链表后,输出新链表的表头思路用一个中间数组temp存原链表的值,再利用栈的特性(先进后出),用pop()方法将数据逆向存回原链表代码实现/*function ListNode(x){ this.val = x; this.next = null;}*/function ReverseList(pHead){ // write code here var temp = []; var currentNode =原创 2020-05-10 17:34:26 · 112 阅读 · 0 评论 -
03 利用两个栈实现队列的先进先出特性
原理原创 2020-05-09 16:35:52 · 600 阅读 · 0 评论 -
02 根据前序中序遍历重建二叉树
文章目录二叉树前序遍历二叉树中序遍历根据前序中序遍历重建二叉树问题:给定一个二叉树的前序遍历和中序遍历结果,要求重建这个二叉树二叉树前序遍历先输出当前结点,再依次遍历输出左结点和右结点二叉树中序遍历先遍历输出左结点,再输出当前结点,再遍历输出右结点根据前序中序遍历重建二叉树思路:前序遍历序列的第一个结点一定是根节点在中序遍历序列中找到前序遍历第一个结点的位置,该位置前部为左子树...原创 2020-05-08 13:50:55 · 158 阅读 · 1 评论 -
01 从尾到头打印链表
js实现从尾到头打印链表题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList先存入数组再将数组逆序打印我的思路是将链表内容先存到一个中间数组,再将这个中间数组逆序放入结果数组中(也可以直接进行数组翻转)/*function ListNode(x){ this.val = x; this.next = null;}*/function printListFr...原创 2020-05-08 12:10:13 · 234 阅读 · 1 评论