自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疯狂的兔子

GitHub主页:https://github.com/TimeIvyace

  • 博客(27)
  • 收藏
  • 关注

原创 剑指Offer-二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路—递归:只要跟树有关的题目,几乎都会用到递归!如何找到递归切入点是最重要的。首先我们要理解什么是二叉搜索树,二叉搜索树的所有根结点一定大于左子结点,一定小于右子节点。题目输入的是二叉搜索树的后序遍历数组,根据后序遍历的顺序:左子树-右子树-根...

2019-03-29 17:16:46 197

原创 剑指Offer-从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:这道题是二叉树的层次遍历,如何实现一层一层的存储,这里就可以使用队列!将当前节点的左右子树存入队列,在队列中提取它的同层节点,依次将同层节点的左右子树也存入队列,这样就能实现同层节点的前后存储。解题思路—精简:精简版的代码使用ArrayList模拟一个队列,而无需像上述方法要import队列。Java解题import...

2019-03-29 11:06:40 117

原创 剑指Offer-二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5初步解题思路:**镜像就是交换一个节点的左子树和右子树,只要遍历出所有节点,再交换他们的左右指针即可。**如何遍历,就可以使用树的前序遍历等来实现。只是...

2019-03-29 10:15:31 233

原创 剑指Offer-树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路:看到树,第一个想法就是肯定会用到递归。判断B是不是A的子结构,切入点就是先要找到A中有没有节点能匹配上B的根节点,在接下去判断B的左右子树在不在A中。解题思路—精简:这个代码内容其实和上述解题思路是一样的!不过,代码简洁了很多!巧妙利用了逻辑运算符:||只要遇到true最后结果则为tr...

2019-03-28 18:31:00 190

原创 剑指Offer-顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.初步解题思路:使用for循环,按照题意从外向内循环打印,但是特别要注意行列为奇数时,最后循环到只剩一行的情况,可以单独...

2019-03-28 15:04:19 253

原创 剑指Offer-包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数 (时间复杂度应为O(1))。看到题目特别是模拟编辑器上的代码,给了四个空函数,一开始有点搞不清题意,到底是要做什么。这题想要你模拟出一个栈的push、pop以及能够获得栈的top和栈中最小值,也就是说,你新建了一个栈,不调用java封装的栈函数,调用这四个函数也是实现相应的操作。最优解:因为本题要求时间复杂度...

2019-03-27 16:42:05 194

原创 剑指Offer-栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)递归:这题可以使用递归求解,就是思路不太好想,举个例子:pushA第一个元素为1,po...

2019-03-27 14:04:54 237

原创 剑指Offer-合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。初步解题思路:新建一个链表,用来顺序存储list1和list2。最优解:初步解题方法较为繁琐,这题可以使用递归解决!只需要不断的将list1和list2的next输入程序,最后递归到链表表尾,会从后向前改变list1和list2的指针,没有进行比较的数据顺序不会发生变化。Java初步解题/...

2019-03-26 14:00:50 136

原创 剑指Offer-反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。最优解:使用两个指针,一个存储原链表的后续内容,一个用来存储当前的反转链表。循环存储是核心!最优解/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }...

2019-03-26 10:32:43 231

原创 剑指Offer-链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。初步解题思路:先求出链表总长,再从头遍历到倒数第k个结点。最优解:这个想法很巧妙。因为求得是倒数第k个,所以设置两个头指针,一个先走到k个结点,然后两个指针同时走,当第一个指针走完为null时,第二个指针也走到了倒数第k个结点(第二个指针还剩k个结点)。Java初步解题/*public class ListNode { int ...

2019-03-26 10:07:19 155

原创 剑指Offer-调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。初步解题思路:直接使用两个Arraylist分别存储奇偶数,然后Arraylist合并,再存入原array即可。进阶解题思路:上面空间换时间,可以改为只新建一个新数组来存储偶数,奇数直接按顺序存进原array中,最后再...

2019-03-25 20:49:10 124

原创 剑指Offer-数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。初步解题思路:用一个循环,循环exponent次做base的累乘。进阶解题思路:这题还可以使用递归来解决。若exponent为偶数,an=an/2 × an/2;exponent为奇数,an=(a(n-1)/2)×(a(n-1)/2)*a,这样算法时间复杂度可以降至为O(lo...

2019-03-25 15:14:56 146

原创 剑指Offer-二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。初步解题思路:一开始看到题目直接想到的是将数转化为二进制,将二进制压入堆栈。然后将负数从堆栈中pop出,再取反加1压入另外一个堆栈,最后在每一位pop出进行比较。这个想法实在是太复杂,而且空间复杂度和时间复杂度都特别大,满足不了题目要求。最优解1:这种解法特别巧妙!推荐使用!如果整数不为0,则其二进制中至少有一个1。...

2019-03-22 16:17:42 152

原创 剑指Offer-矩形覆盖

题目描述我们可以用2×1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种方法?解题思路:n=1时,有1种方法;n=2时,有2种方法;所以要覆盖2×n时:若摆放一块2×1小矩阵,则摆放方法共为f(n-1);若摆放一块1×2小矩阵,则摆放方法共为f(n-2)。因为大矩阵为2×n,在第一排上横向防止小矩形,则第二排上必须横向放置小矩形...

2019-03-22 09:55:59 175

原创 剑指Offer-变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。初步解题思想:跳上一级台阶有1中跳法,跳上两级台阶有两种跳法,跳上三级台阶有三种跳法,…,跳上n级就有2^n种跳法,只要求2的n次方即可。进阶解题思想:跳台阶的进阶版。n级台阶,有f(n)种跳法。则n-1级台阶,有f(n-1)种;n-2级台阶,有f(n-2)种。f(n)=...

2019-03-21 20:01:11 196

原创 剑指Offer-跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。初步解题思路:这题与斐波那契数列有点类似。跳到第n个台阶,只有两种可能:1.从第n-1个台阶跳1个台阶,2.从第n-2个台阶跳2个台阶。所以只需要求出跳到第n-1个台阶和第n-2个台阶的所有可能跳法即可。设F(n)为第n个台阶的跳法,则F(n) = F(n-1) + F...

2019-03-21 13:47:16 141

原创 剑指Offer-斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。注:n<=39初步解题思路:一看到斐波那契数列,即F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)。第一想法肯定是递归。(但是要考虑到会不会溢出,注:递归为什么会导致栈溢出呢?操作系统会给每个进程分配一个最大上限的堆栈空间。栈为先进后出,递归则先压入的数据一直不能...

2019-03-21 10:41:44 223

原创 剑指Offer-旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。初步解题思路:一开始看题没看懂题的意义,也没注意是题目为输入非减排序数组,于是直接遍历数组,求最小值。进阶解题...

2019-03-20 21:12:26 129

原创 剑指Offer-用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。初步解题思路:使用stack1专门用来输入,stack2专门用来输出。当作为队列输出时,将stack1中的内容全部压入stack2中,然后stack2.pop()。当作为队列输入时,将stack2中的内容全部压入stack1中,然后stack1.push(value)。最优解:初步解题思路将数据来回压...

2019-03-20 19:37:13 157

原创 剑指Offer-重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思想:递归思想!使用前序和中序遍历可以确认唯一的二叉树,通过前序可以得知根节点为1,然后通过中序可以得知左子树为{4, 7, 2},右子树为{5,...

2019-03-20 16:40:40 2025

原创 使用Python复制Linux文件到指定文件夹

使用Python脚本语言将Linux中选定的文件复制到指定文件夹,需要使用两个python模块os和shutilimport shutilimport os安装shutil时需要pip install pytest-shutil将选定文件复制到指定文件夹核心代码srcfile = os.path.join(srcdir, img['filepath'], img['filename...

2019-03-18 19:50:58 4718

原创 Java新建链表

LinkedList.javaclass ListNode { int data; ListNode next; public ListNode(int data){ this.data = data; this.next = null; }}public class LinkedList { private Lis...

2019-03-15 21:37:01 745

原创 剑指Offer-从尾到头打印链表

题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。初步解题思路:可以使用两个ArrayList, 一个接收链表值从头到尾,另外一个接受从尾到头的ArrayList值;或者使用stack来实现。进阶解题思路:ArrayList头插法,public void add(int index, E element),利用index索引值,每次将值插入ArrayList的第0个位置...

2019-03-15 21:22:40 110

原创 剑指Offer-替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。初步解题思路 :一看到题目会想到使用string.toCharArray(),但是空格为一个字符,“%20”为三个字符,需要移动数组长度,非常不方便。进阶解题思路:需要了解StringBuffer有没有一些函数可以直接使用,于是...

2019-03-15 10:37:07 109

原创 剑指Offer-二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。Javapublic class Solution { public boolean Find(int target, int [][] array) { int i,j...

2019-03-14 18:03:35 106

原创 Java中判断数组是否为空

一维数组// 一维数组: int[] arrayif(array == null || array.length == 0) return true;二维数组//二维数组: int[][] arrayif((array==null||array.length==0)||(array.length==1&amp;&amp;array[0].length==0)) return tru...

2019-03-14 18:02:10 44881 4

原创 LeetCode-69.Sqrt(x)-牛顿迭代法

题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题思路:注:使用 while(r * r&amp;gt; x)会溢出...

2019-03-12 16:56:24 542

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除