时月oe

博客园 首页 新随笔 联系 订阅 管理

随笔分类 -  数据结构与算法

摘要:归并排序 首先简单复习一下归并排序 class Solution { public void divide(int[] nums,int l,int r){ if(l < r){ int mid = (r + l) / 2; divide(nums,l,mid); divide(nums,mid + 阅读全文
posted @ 2022-08-08 09:43 时月oe 阅读(25) 评论(0) 推荐(0)

摘要:题目来源:排序链表 就是对链表进行排序,题目中另外一个要求就是使用$O(nlogn)$时间复杂度的算法,对于链表排序,比较好的办法就是递归排序 基本的算法流程如下 确定链表中点(可以使用快慢指针法) 将链表对半分,分别排序 有序链表合并 1、快慢指针 对于一个链表,想要获取其中点,可以定义两个指针, 阅读全文
posted @ 2022-07-19 18:05 时月oe 阅读(147) 评论(0) 推荐(0)

摘要:题目来源:合并两个有序链表 两个链表有序,这个很类似于归并排序的归并过程,但是数组的归并过程会创建一个临时数组,这里如果创建一个临时链表开销就比较大了,因此需要考虑原地排序算法 非递归方案 首先我们定义一个ans节点,用来保存排序后的头节点 然后定义一个prev节点,表示经过排序后的当前节点 首先比 阅读全文
posted @ 2022-07-19 17:33 时月oe 阅读(62) 评论(0) 推荐(0)

摘要:冒泡排序 选择排序 快速排序 阅读全文
posted @ 2022-05-07 18:38 时月oe 阅读(13) 评论(0) 推荐(0)

摘要:最大正方形 首先说一下暴力方法,就是对于每一个元素,如果是1,那么就判断他的左上角是不是1,如果是,就扩展这个正方形,查看对应的一列和一行是不是全都是1,如果是就继续扩展 暴力法 虽然说我用的是动态规划,但是本质上还是暴力搜索 class Solution { public: int maximal 阅读全文
posted @ 2022-03-19 20:08 时月oe 阅读(54) 评论(0) 推荐(0)

摘要:并查集 并查集的作用就是为了快速判断两个结点是否是联通的,可以用来判断公共祖先等问题 并查集主要的任务就是维护find和union函数 public class UnionFind { public int[] root; public UnionFind(int Size){ root = new 阅读全文
posted @ 2022-03-07 20:37 时月oe 阅读(35) 评论(0) 推荐(0)