随笔分类 -  Java数据结构和算法

摘要:问题描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径?LeetCode 阅读全文
posted @ 2020-02-18 00:17 沐雨橙风~~ 阅读(151) 评论(0) 推荐(0)
摘要:实现思路分析: (1)首先设定一个中间值,通过该值将数组分成左右两部分。 (2)将大于或等于中间值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于中间值,而右边部分中各元素都大于或等于中间值。 (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又 阅读全文
posted @ 2020-02-10 13:32 沐雨橙风~~ 阅读(487) 评论(0) 推荐(1)
摘要:实现思路: 1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。 2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有 5个数 ,17比45小,需要交换,但是17也比20小,也要交换,当不需 阅读全文
posted @ 2020-02-08 10:51 沐雨橙风~~ 阅读(41291) 评论(7) 推荐(7)
摘要:实现思路: 1.依次从数组或者队列的开头取出第一个数,第二个,第n个和后面的数进行比较。 2.把每次比较得到的最大值或者最小值放在数组的最前面。 动图演示: 代码实现: 算法分析: 每次循环得到一个极值,每次循环需要比较n 1,n 2.....1次,共循环n 1次。这样时间复杂度为: 由于该算法没有 阅读全文
posted @ 2020-02-07 15:39 沐雨橙风~~ 阅读(423) 评论(0) 推荐(0)
摘要:冒泡排序原理: 1. 比较相邻的元素,如果第一个比第二个大,就交换他们, 把大的放到后面再和后面的其他元素比较。 2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。每次执行完都会产生一个最大数。 3. 每次比较完都会使需要比较的数少 1 ,一直进行到只剩最后一个,即 比较次数从n 1 阅读全文
posted @ 2020-02-06 12:06 沐雨橙风~~ 阅读(267) 评论(0) 推荐(0)
摘要:排序分类: 内部排序:把数据加载到内存中进行排序,适用于数据量小的情况。 外部排序:借助外部的文件等,数据量大,无法加载到内存。 常见分类如图: 算法复杂度 算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空 阅读全文
posted @ 2020-02-06 10:40 沐雨橙风~~ 阅读(2799) 评论(13) 推荐(1)
摘要:题目描述 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一种自杀方式,41 个人排成一个圆圈,由第 1 个人开始报数,报数到 3 的人就自杀,然后再由下一个 阅读全文
posted @ 2020-02-05 13:33 沐雨橙风~~ 阅读(192) 评论(0) 推荐(0)
摘要:队列的特点 1.可以使用数组和链表两种方式来实现。 2.遵循先入先出(FIFO)的规则,即先进入的数据先出。 3.属于有序列表。 图解实现过程: ​ 1.定义一个固定长度的数组,长度为maxSize。 ​ 2.设置两个指针first = 1(指向队列第一个数据的前一位,这样保证在添加第一 个数据以后 阅读全文
posted @ 2020-01-31 20:50 沐雨橙风~~ 阅读(1556) 评论(0) 推荐(0)