数据结构
文章平均质量分 70
丶chuchu丶
无限进步
展开
-
非基于比较的排序
基数排序、桶排序、计数排序原创 2022-02-20 21:54:05 · 255 阅读 · 6 评论 -
万字排序算法总结
排序算法、直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序原创 2022-02-20 21:16:47 · 259 阅读 · 4 评论 -
优先级队列的相关应用
一、topK问题问题描述:从N个数中找到前K个大的数比如{1,2,3,4,5}中前2个大的就是 4 和 5这里介绍使用优先级队列的方法,思路是这样:用数组中前K个元素先构建一个小根堆 然后遍历数组取值,如果这个值大于堆顶元素就弹出堆顶元素 再把这个值放入重新调整为一个小根堆因为每次都把堆中最小的值弹出,所以最后留下的K个值一定是最大的。照这个思路,我们不难得到:求前K个最大,建小根堆 求前K个最小,建大根堆 求第K大,就是调整好的小根堆的堆顶元素(堆顶元素一定是这K个.原创 2022-02-12 23:00:55 · 522 阅读 · 2 评论 -
创建优先级队列
本篇将介绍优先级队列,并自己创建一个。目录概念分类创建优先级队列基本方法shiftDown()方法shiftUp()方法概念首先注意:堆只是优先级队列的一种是实现方式而已讲到优先级队列就要讲到二叉树使用数组存储,并用层序遍历的方式放入数组中就是它的表现形式一般为了保证没有空间浪费,存储的都是完全二叉树分类优先级队列还分为大根堆和小根堆大根堆就是任意节点值都大于子树节点值,小根堆相反因为它们的特点,所以优先级队列的作用就..原创 2022-02-11 19:19:26 · 1131 阅读 · 2 评论 -
力扣42、接雨水(单调栈思想)
力扣42、接雨水(单调栈)原创 2022-02-09 15:48:43 · 461 阅读 · 0 评论 -
力扣239、滑动窗口最大值(单调队列思想)
力扣刷题——滑动窗口的最大值原创 2022-02-08 23:04:30 · 291 阅读 · 0 评论 -
刷题日志——链表篇(下)
此题的一种思路是:分别算出两个链表长度,然后让短的先走他们长度的插值这样两个链表在同一起点,一起往后走直到遇到相同节点就返回(如果没有相同的他们一起到null了)代码:public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null && headB == null){原创 2021-12-05 12:15:00 · 455 阅读 · 2 评论 -
刷题日志——链表篇(上)
这篇博客就是总结以下自己刷力扣链表简单题的错误点与想法。1.合并两个有序链表第一次的有错想法:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(-1); ListNode tmp = dummy; while (l1 != null || l2 != null){ ..原创 2021-12-04 10:41:36 · 804 阅读 · 2 评论 -
时间复杂度与空间复杂度
一串代码的效率很重要,衡量一串代码的效率可以分为两个标准:时间复杂度、空间复杂度目录✍一、时间复杂度????二、计算时间复杂度练习????三、空间复杂度????四、计算时间复杂度练习一、时间复杂度因为每个机器配置不同,不可能去测试代码执行时间。所以我们用算法中的基本操作的执行次数,为算法的时间复杂度。让我们来看一串代码:// 请计算一下func1基本操作执行了多少次?void func1(int N){ //1. int count = 0;原创 2021-11-01 16:04:05 · 184 阅读 · 2 评论