
剑指offer刷题指东指西不指南北
剑指offer的刷题记录
王小扣
IT
展开
-
5. 从尾到头打印链表
5. 从尾到头打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 解题思路 解法1:顺序遍历 最简单的方法就是对链表进行顺序遍历,需要借助JavaScript数组的几个内置的方法 Array.reverse() 顺序遍历,将值放到数组中,对数组进行翻转 function printListFromTailToHead(head) { // write ...原创 2019-10-11 16:55:24 · 148 阅读 · 0 评论 -
6. 重建二叉树
6. 重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路:递归 思路:了解前序遍历和后序遍历的特征,前序遍历序列第一个元素为根节点后边为全部左子树节点+全部右子树节点;中序遍历序...原创 2019-10-11 16:59:29 · 158 阅读 · 0 评论 -
7. 用两个栈实现队列
7. 用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路 入栈:向栈1中插入 出栈:判断栈2是否为空 空:栈1元素全部压入栈2 栈2出栈 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pNrkex4T-1570784378627)(/images/剑指offer/7.用两个栈实现队列....原创 2019-10-11 17:00:10 · 145 阅读 · 0 评论 -
8. 旋转数组的最小数字
8. 旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路:二分查找 规律: left>=right 如果Array[mid]&...原创 2019-10-11 17:00:53 · 166 阅读 · 0 评论 -
9. 斐波那契数列
9. 斐波那契数列 问题描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 解题思路 解法1:递归 /.java public class Solution { public int Fibonacci(int n) { if (n == 0) return 0; if (n == ...原创 2019-10-11 17:04:54 · 272 阅读 · 0 评论 -
10. 二进制中1的个数
10. 二进制中1的个数 算法描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 解法1:可能引起死循环的解法 输入的数n与1做与运算,1的左边位均为0,做与运算结果为0;结果为0或者1就看末位是0或者1 输入n 1 0 1 0 1 1 0 0 0 0 1 结果 0 0 0 0 1 主要问题出在 n >> 1上面,负数的左移是在左边...原创 2019-10-11 17:05:15 · 233 阅读 · 0 评论