
剑指Offer
一只奋斗的小菜鸟
迷茫,本就是青春该有的样子 ,但不要让未来的你,讨厌现在的自己。
展开
-
剑指offer-----旋转数组的最小数字
/** * 剑指offer面试题8:旋转数组的最小数字 * * 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转, * 输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. * * 考查:二分查找的理解 * * 思路: 在排序数组中,可以使用二分查找法进行查找...原创 2018-08-04 20:37:49 · 204 阅读 · 0 评论 -
剑指offer-----重构二叉树
/** * 剑指offer面试题6:重构二叉树 * * 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历结果中都不含重复的数字。 * * 思路:根据前序遍历序列的第一个数字创建根结点,接下来在中序遍历序列中找到根结点的位置,这样就可以确定左、右子树结点的 * 数量。在前序遍历和中序遍历的序列中划分左、右子树结点的值,然后递归调用,分别构...原创 2018-08-02 20:15:53 · 182 阅读 · 0 评论 -
剑指offer-----数值的整数次方
/** * 剑指offer面试题11:数值的整数次方 * * 题目:实现函数double power(double base,int exponent),求base的exponent次方。 * 不得使用库函数,同时不需要考虑大数问题. * * 特殊情况分析: * 1.底数为0,指数为负数的情况,无意义 * 2.指数为0,返回1 * 3.指数为负数,返回(1.0/(...原创 2018-08-07 09:35:14 · 258 阅读 · 0 评论 -
剑指offer-----从尾到头打印链表
import java.util.Stack;/** * 从尾到头打印链表 * 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。等价于反转链表 * * 考察:单链表的理解,对循环、递归和栈3个相互关联的概念理解 * * 考虑:是否允许改变链表的结构 */public class LinkListReverse { //使用栈结构存储结点值。-------...原创 2018-08-02 10:07:11 · 233 阅读 · 0 评论 -
剑指offer-----二维数组中的查找
/** * 二维数组中的查找 * * 题目:在一个二维数组中(每个一维数组长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数, * 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * * 解法思路1:因为二维数组每行都是递增顺序,那可以遍历每一行,利用二分查找,搜素目标值。时间复杂度为O(nlogn)...原创 2018-08-01 20:24:45 · 224 阅读 · 0 评论 -
剑指offer-----调整数组顺序使奇数位于偶数前面
/** * 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面 * * 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有 * 偶数位于数组的后半部分。 * * 思路1:我们可以维护两个指针,第一个指针初始化时指向数组的第一个数字,它只向后移动;第二个指针初始化时指向数组的最后一个数字, * 它指向前移动。在两个指针相...原创 2018-08-10 13:35:49 · 572 阅读 · 0 评论 -
剑指offer-----二进制中1的个数
/** * 剑指offer面试题10:二进制中1的个数 * * 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001, * 有2位是1。因此如果输入9,该函数输出2. * * 思路1:首先把n和1做与运算,判断n的最低位是不是1.接着把1左移一位得到2,再和n做与运算,就能判断n的次位是不是1.... * 这样反复左移,每次就能判断n...原创 2018-08-06 10:15:31 · 244 阅读 · 0 评论 -
剑指offer-----在O(1)时间删除链表结点
/** * 剑指offer面试题13:在O(1)时间删除链表结点 * * 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 * * 解题思路:由于给定的是单向链表,正常删除链表的时间复杂度是查找链表的时间复杂度即O(n), * 如果要求在O(1)时间复杂度内删除节点,通过遍历链表找到该节点的上一节点和下一节点的方法 * 是行不通了。所以实现的思路...原创 2018-08-10 10:58:28 · 437 阅读 · 0 评论 -
剑指offer-----打印1到最大的n位数
import java.util.Arrays;/** * 剑指offer面试题12:打印1到最大的n位数 * * 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数即999. * * 考查:解决大数处理问题---可以使用字符串或者数组来处理大数问题 * * 思路1:在字符串或者数组模拟数字加法的解法 * 思路2:把问...原创 2018-08-10 09:47:05 · 381 阅读 · 0 评论 -
剑指offer-----替换空格
/** * 替换空格 * 请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"we are happy",则输出"we%20are%20happy" * * 需要考虑1:替换字符串是否在原来的字符串上做替换,还是新开辟一个字符串做替换。 * 需要考虑2:在当前字符串替换,怎么替换才更有效率(不考虑java中的replaceAll方法) * * 解决1思路:直接调用S...原创 2018-08-01 10:02:26 · 142 阅读 · 0 评论 -
剑指offer-----斐波那契数列
/** * 剑指offer面试题9:斐波那契数列 * * 题目:写入一个函数,输入n,求斐波那契数列的第n项。 * * 考察:递归,循环,时间复杂度的理解 * * 推荐方式:用循环来解 * * 应用1:一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级台阶总共有多少中跳法。 * * 相关题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请...原创 2018-08-05 10:49:23 · 242 阅读 · 0 评论 -
剑指offer-----用两个栈实现队列
import java.util.Stack;/** * 剑指offer面试题7:用两个栈实现队列 * * 题目:用两个栈实现一个队列。完成队列的Push和Pop操作。队列的元素为int类型。 * * 考查:对栈和队列的理解,栈是先进后出,队列是先进先出 * * 思路:第一准备两个栈用于实现队列分别为instack和outstack; * 第二当有新元...原创 2018-08-03 13:19:34 · 472 阅读 · 0 评论