
剑指offer
Hermione Granger
To be or not to be,that's a question.
展开
-
剑指offer 1.二维数组中的查找
时间限制:1秒 空间限制:32768K本题知识点: 查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一:传统遍历(较慢,只是能解决问题)public class Solution { public boolean Find...原创 2019-03-31 15:09:20 · 17026 阅读 · 0 评论 -
剑指offer 16.合并两个排序的链表
时间限制:1秒 空间限制:32768K 本题知识点: 链表题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:利用递归进行解决,先比较两个链表头结点的大小,将较大的节点作为头结点,然后该节点的next后的节点与另一个链表合并后,放到较大的头结点后即可./*public class ListNode { int val;...原创 2019-03-31 20:47:45 · 17039 阅读 · 0 评论 -
剑指offer 15.反转链表
时间限制:1秒 空间限制:32768K题目描述输入一个链表,反转链表后,输出新链表的表头。思路:利用递归解决即可,首先考虑两个节点的情况,将头结点的next指针指向的节点进行反转,然后,将头结点的next指针置空,放到反转后的next节点尾部即可/*public class ListNode { int val; ListNode next = null; ...原创 2019-03-31 20:48:06 · 17018 阅读 · 0 评论 -
剑指offer 9.变态跳台阶
时间限制:1秒 空间限制:32768K题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+…+f(1)因为f(n-1)...原创 2019-03-31 20:38:17 · 17093 阅读 · 0 评论 -
剑指offer 8.跳台阶
时间限制:1秒 空间限制:32768K题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路: 典型的斐波那契算法思路,1.假设当有n个台阶时假设有f(n)种走法。2.青蛙最后一步要么跨1个台阶要么跨2个台阶,只有这两种情况。3.当最后一步跨1个台阶时即之前有n-1个台阶,根据1的假设即n-1个台阶有f(n...原创 2019-03-31 19:01:31 · 17055 阅读 · 0 评论 -
剑指offer 7.斐波那契数列
时间限制:1秒 空间限制:32768K题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39来自百度百科对斐波那契数列的介绍: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,...原创 2019-03-31 18:39:56 · 17120 阅读 · 0 评论 -
剑指offer 6.旋转数组的最小数字
时间限制:3秒 空间限制:32768K 本题知识点: 查找题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路1: 直接最简单的数组遍历,因为是有序的,所...原创 2019-03-31 18:25:32 · 17107 阅读 · 0 评论 -
剑指offer 5.用两个栈实现队列
时间限制:1秒 空间限制:32768K 本题知识点: 队列 栈题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:抽象的想象两个栈,调用push方法的时候在第一个栈中压入数据,然后在调用pop方法时,如果第二个栈为空,就从第一个栈中把数据倒入第二个栈,然后在第二个栈中取出顶部元素,等到取完的时候,再次倒入即可.import java.u...原创 2019-03-31 15:29:49 · 17059 阅读 · 0 评论 -
剑指offer 4.重建二叉树
时间限制:1秒 空间限制:32768K题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:找到根节点,然后利用递归,设置左右孩子即可./** * Definition for binar...原创 2019-03-31 15:22:32 · 17046 阅读 · 0 评论 -
剑指offer 3.从尾到头打印链表
时间限制:1秒 空间限制:32768K 本题知识点: 链表题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路: 将链表存在栈中,先遍历链表进行入栈,然后出栈,实现从尾到头返回/*** public class ListNode {* int val;* ListNode next = null;** L...原创 2019-03-31 15:16:42 · 17060 阅读 · 0 评论 -
剑指offer 2.替换空格
时间限制:1秒 空间限制:32768K本题知识点: 字符串题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:简单粗暴的字符串替换public class Solution { public String replaceSpace(StringBuffer st...原创 2019-03-31 15:12:53 · 17023 阅读 · 0 评论 -
剑指offer 29.最小的K个数(优先队列解决法)
时间限制:1秒 空间限制:32768K 本题知识点: 数组题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:我考虑用最大堆来实现(java自带默认最大堆)可以全部入堆,再出k个元素,即可,但这样会浪费空间,就不符合最小堆动态排序这种特点import java.util.ArrayList;imp...原创 2019-04-08 21:39:03 · 17135 阅读 · 0 评论