自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 4.跳台阶

一、前言记录一下刷题历程,方便回顾学习。如有错误,恳请指出。二、题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。三、求解 思路:如果当一只青蛙在第n级台阶上,那么这只青蛙跳上这第n级台阶的上一步在哪里呢?很显然它的上一步要么是在n-1级台阶,要么是在n-2级台阶(因为它只能跳1级台阶或者跳2级台阶)。也就是说它跳上n级台阶的跳法数是跳上n-1级或者跳上n-2级台阶跳法数...

2021-07-08 20:44:03 108

原创 3.用两个栈实现队列

一、前言记录一下刷题历程,方便回顾学习。如有错误,恳请指出。二、题目用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。三、求解 思路一: 入队列:先判断栈S1是否为空,如果为空的话就把栈S2中的所有元素弹出并依次压入栈S1(如果栈S2不为空的话),然后再将新的元素压入S1。 出队列:出...

2021-07-07 20:00:02 88

原创 2.从尾到头打印链表

一、前言记录一下刷题历程,方便回顾学习。如有错误,恳请指出。二、题目输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 示例:输入:{1,2,3} 返回值:[3,2,1]三、求解 方法1:栈实现 时间复杂度-O(n) 空间复杂度-O(n)public static ArrayList<Integer> printListFromTailToHead(ListNode listNode...

2021-07-06 19:35:58 82

原创 1.斐波那契数列

一、前言记录一下自己的刷题记录,方便自己回顾学习。二、什么是斐波那契数列?百度百科给出的答案是这样的:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n - 1)+F...

2021-07-05 19:56:27 378

原创 基数排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述基数是什么意思?对于十进制整数,每一位都只可能是0~9中的某一个,总共有10种可能,那么10就是它的基数。同理二进制数字的基为2;对于字符串,如果它使用的是8位的扩展ASCII字符集,那么它的基就是256.基数排序不是基于比较的算法。常见的数据元素一般是由若干位组成,比如字符串由若干字符组成,整数由若干位0~9数字组成。基数排序按照从右往左的顺序,依次将每一位都当做一次关键字,然

2021-05-19 22:53:23 365

原创 桶排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述桶排序的工作原理:假设输入数据服从均匀分布,利用某种函数的映射关系将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或者是以递归方式继续使用桶排序)。桶排序利用函数的映射关系,减少了几乎所有的比较关系。实际上,桶排序的f(k)值的计算,其作用就相当于快排中的划分,已经把大量数据分割成了基本有序的数据块(桶),然后只需要对桶中的少量数据做排序即可。步骤1.判断

2021-05-13 22:49:22 84

原创 计数排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述计数排序是一个排序时不比较大小的排序算法。如果一个数组里所有元素都是整数,而且都在0~k以内。对于数组里的每个元素来说,如果能知道数组里有多少项小于或等于该元素,就能准确地给出该元素在排序后的数组位置。比如下图:对于这个数组来说,元素5之前有8个元素小于等于5(含5本身),因此排序后5所在的位置肯定是下标为7的位置。只要构造一个(5+1)大小的数组,里面存下所有对应A中每

2021-04-29 21:50:39 2225

原创 堆排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述应用场景:许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或者不一定要一次就将它们排序,很多时候每次只需要操作数据中的最大(最小)元素,那么有一种基于二叉堆的数据结构可以提供支持。二叉堆:就是一个完全二叉树的结构,同时满足堆的性质:即子节点的键值或索引总小于(或者大于)它的父节点。在一个二叉堆中,根节点总是最大(或者最小)节点。堆排序算法就是抓住了这一特点,每次都

2021-04-27 22:45:48 60

原创 快速排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述快速排序算法是对冒泡排序的一种改进,也是采用分治法的一个典型应用。算法思想是先任意选取一个数据(比如数组中的第一个数)作为关键数据,把这个选取的数成为基准数(Pivot),然后将数组里面比它小的数全部放在它前面,比它大的数都放在它后面,这个过程结束之后为一次快速排序,也被称为一次分区排序。通过一趟快速排序将要排序的数据分割成为独立的两部分,其中一部分的所有数据都比另一部分的所有数

2021-04-22 21:05:05 72

原创 归并排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述归并排序是建立在归并操作上的一种有效的排序算法,是采用分治法的一个非常典型的应用。基本思想是对于给定的一种数组,利用递归与分治技术将数据划分成为越来越小的半子表,在对半子表排序后,再用递归方法将排序好的半子表合并成为越来越大的有序序列。有时候为了提升性能,会在半子表的个数小于某个数(比如15)的情况下,对半子表的排序采用其他排序算法,比如插入排序。因为我这里是将两个有序表合并成为

2021-04-15 22:11:35 65

原创 希尔排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出,万分感谢。简述在学习希尔排序之前,最好学习一下简单插入排序,深刻了解一下简单插入排序内部的思想和代码的实现,因为希尔排序是一种基于插入排序的快速的算法。简单插入排序对于大规模乱序数组很慢,因为数组数据只能一个数据一个数据地从数组的一端通过比较移动到数组的另一端。比如,如果数组中最小的数据在数组的尽头,这时候想做升序排序,那么想要将它一到正确的位置就需要进行N-1次移动。希尔排序就是为了加快速度

2021-04-14 21:16:47 66

原创 简单插入排序

前言最近在学数据结构与算法,在此做一下记录,方便时不时复习一下。如果有什么做得不对的地方,恳请指出。简述简单插入排序有点像我们在打牌时的场景,一开始有五张牌,自己看着有点乱,先从左到右进行排序,可能由大到小,也可能由小到大,怎么排序看我们的心情,但是一旦排序之后,我们就不想动了。此时,重新摸一张牌,我们需要将新摸上来的这张牌进行排序,从后向前找到这张新牌该放在的位置。其实简单插入排序也是这个原理,当前面的数据有序时,我们该怎么将未排序的数据插入到前面已经排好序的数据当中去呢?步骤1.对于

2021-04-12 22:58:42 270 2

原创 简单选择排序

前言最近在学数据结构与算法,在自己手敲的前提下做一下记录,方便自己以后复习。如果有什么做得不对的地方,恳请指出。简述简单选择排序是不断地选择剩余元素之中的最大(小)值。简单选择排序相当于冒泡排序的优化,和冒泡排序的相同点是经过一次循环(查找)之后,把最大(最小)的元素放到数组的最前面(最后面);不同的是,冒泡排序是通过相邻的比较和交换,而选择排序是通过对整体进行选择,在确定了最大(最小)的情况下才进行交换,大大减少了交换的次数。步骤1.找到数组中最大(小)的元素;2.将找到的元素和数

2021-04-11 13:19:52 748 2

原创 冒泡排序

前言最近在学数据结构与算法,在自己手敲的前提下做一下记录,方便自己以后复习。简述冒泡排序是十大排序算法中最简单的一种了,它反复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个步骤会重复地进行直到没有元素需要交换,此时就说明数列已经排序好了。因为元素会经由交换慢慢“浮”到数列的一端(升序或降序),所以算法的名字叫冒泡排序。步骤1.从数组头开始,比较相邻的元素。如果第一个比第二个大(小),就交换它们 两个;2.对每一对相邻元素作同样的工作,从开始第一对到尾

2021-04-10 14:20:00 59

空空如也

空空如也

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

TA关注的人

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