
算法&数据结构
文章平均质量分 52
优雅的心情
这个作者很懒,什么都没留下…
展开
-
数据结构学习汇总
文章目录1.数组和字符串1.数组和字符串原创 2021-03-22 17:24:51 · 398 阅读 · 0 评论 -
常见算法问题
文章目录1.组合策略1.组合策略组合问题原创 2021-05-04 13:49:34 · 87 阅读 · 0 评论 -
Leetcode两两交换链表中的节点(24)
文章目录题目描述方法一:递归思路与算法复杂度分析方法二:迭代思路与算法复杂度分析题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]方法一:递归思路与算法可以通过递归的方式实现两两交换链表中的节点。递归的终止条件是链表中没有节点,或原创 2021-04-22 12:33:56 · 288 阅读 · 0 评论 -
数据结构之链表
文章目录链表(LinkedList)链表的优缺点链表(LinkedList)单链表:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。双链表:与单链表不同的是,双链表的每个结点中都含有两个引用字段。链表的优缺点链表的优点如下:链表能灵活地分配内存空间;能在 O(1) 时间内删除或者添加元素,前提是该元素的前一个元素已知,当然也取决于是单链表还是双链表,在双链表中,如果已知该元素的后一个元素,同样可以在 O(1) 时间内删除或者添加该元素。链表原创 2021-03-23 16:45:22 · 176 阅读 · 0 评论 -
LeetCode有效的字母异位词(242)
文章目录题目:有效的字母异位词题目:有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。...原创 2021-03-23 10:30:09 · 102 阅读 · 0 评论 -
数据结构之数组、字符串
文章目录1.数组2.字符串及数组算法题1.数组数组的优点在于:构建非常简单能在 O(1) 的时间里根据数组的下标(index)查询某个元素而数组的缺点在于:构建时必须分配一段连续的空间查询某个元素是否存在时需要遍历整个数组,耗费 O(n) 的时间(其中,n 是元素的个数)删除和添加某个元素时,同样需要耗费 O(n) 的时间2.字符串及数组算法题...原创 2021-03-22 17:40:21 · 102 阅读 · 0 评论 -
Java排序算法___选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择原创 2021-01-03 09:08:47 · 79 阅读 · 0 评论 -
快速排序法_______Java
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列:3 1 2 5 4 6 9 7 10 8在初始原创 2020-07-27 19:48:36 · 119 阅读 · 0 评论 -
排序算法----冒泡排序法
冒泡排序法※ 冒泡排序法原理对数组进行排序,冒泡排序法的原理就是将一组无序数组进行排序,同过把值较小的数逐渐向数组的顶部(即朝第一个元素)冒出来,就像水中的气泡上升一样。同时,值较大的数据逐渐向数组的底部(即朝最后一个元素)沉下去。这种算法用嵌套的循环对整个数组进行数次遍历,每次遍历都要比较数组中相邻的一对元素,如果这对元素以升序(或者值相等)的顺序排列,那么保持它们的位置不变;如果这对元素以降序的顺序排列,那么交换他们的值。图解:如图是一个共有15个数的无序数组,所以需要进行14次(n-1)原创 2020-05-28 15:10:39 · 787 阅读 · 0 评论 -
排序算法-------插入排序法
插入法排序※ 插入法排序原理利用插入法对无序数组排序时,我们其实是将数组R划分成两个子区间R[1..i-1](已排好序的有序区)和R[i..n](当前未排序的部分,可称无序区)。插入排序的基本操作是将当前无序区的第1个记录R[i]插人到有序区R[1..i-1]中适当的位置上,使R[1..i]变为新的有序区。因为这种方法每次使有序区增加1个记录,通常称增量法。插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上原创 2020-05-28 14:52:18 · 835 阅读 · 0 评论 -
Java对象排序
java实现对象比较,可以实现java.lang.Comparable或java.util.Comparator接口方法一:将要排序的对象类实现Comparable<>接口。首先,创建学生类,我们将根据学生成绩对学生进行排序:/** * 〈学生自动排序类〉 * * @author vegetable * @create 2018/12/2410:30 * @si...原创 2018-12-24 15:20:40 · 230 阅读 · 0 评论