• 2024-11-12计蒜客:圣诞树(dijkstra,特殊的生成树)
     基础原理:特殊的生成树给定一张无向图,其中边权都是正数,你需要求出总代价最小的生成树,生成树上每条边 (u,v)(u,v) 的代价为 w(u,v)∗count(v)w(u,v)∗count(v),其中 w(u,v)w(u,v) 为边 (u,v)(u,v) 的权值,count(v)count(v) 是 vv 所在子树的结点数总和。解法:虽然看起
  • 2024-11-08计蒜客:骑车比赛(Dijkstra)
     学习堆优化的写法1#include<bits/stdc++.h>2usingnamespacestd;3intn,m,a,b,c;4typedefpair<int,int>pii;//first表示距离,second表示节点号5vector<pii>graph[1005];6set<pii>minHeap;7vector<int>dis(1005,INT32_MAX);
  • 2024-10-23每日算法一练:剑指offer——数组篇(4)
    数据流中的中位数        中位数 是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2+3)/2=2.5设计一个支持以下两种操作的数据结构:voidaddNum(intnum) -从数据
  • 2024-08-05LeetCode 1631. Path With Minimum Effort
    原题链接在这里:https://leetcode.com/problems/path-with-minimum-effort/description/题目:Youareahikerpreparingforanupcominghike.Youaregiven heights,a2Darrayofsize rowsxcolumns,where heights[row][col] representstheheightofcell (row,c
  • 2024-08-05大根堆和小根堆的介绍
    堆(Heap)的基本概念堆是一种完全二叉树(CompleteBinaryTree),其性质使得堆可以高效地支持以下操作:插入(Insert):将一个新元素加入到堆中。删除最大/最小元素(DeleteMax/Min):移除并返回堆中的最大(大根堆)或最小(小根堆)元素。获取最大/最小元素(GetMax/Min):返回堆中的最大(大根堆)或最小(小
  • 2024-06-23C# 霍夫曼解码
    HuffmanTree进行解码示例图  c语言:c语言霍夫曼编码|贪婪算法(HuffmanCoding|GreedyAlgo)_霍夫曼的贪婪c语言-CSDN博客c++:c++霍夫曼编码|贪婪算法(HuffmanCoding|GreedyAlgo)_霍夫曼的贪婪算法设计核心代码-CSDN博客c#:C#霍夫曼编码|贪婪算法(HuffmanCodin
  • 2024-05-30C++实现哈夫曼树
    哈夫曼树(HuffmanTree)是一种特殊的二叉树,通常用于数据压缩的哈夫曼编码。在哈夫曼树中,频率(或权重)较高的节点离根节点较远,而频率较低的节点离根节点较近。这样,我们可以为频率较低的节点分配较短的编码,为频率较高的节点分配较长的编码,从而实现数据的压缩。本文将详细介绍如何
  • 2024-05-28数组中的第K个最大元素
    主管问到这个问题(数组中的第K个最大元素)。我首先答了partition算法时间复杂度O(n)空间复杂度O(1)。主管说不行,要用堆。然后(我回答)用建大根堆,取前k,时间复杂度O(n+klogn)初始化O(n),pop出k个O(klogn),空间复杂度O(k)(使用原数组建堆,pop出k个)。主管说都不行,然后(主管)给了个小根堆的算法
  • 2024-05-18LeetCode 1353. Maximum Number of Events That Can Be Attended
    原题链接在这里:https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended/description/题目:Youaregivenanarrayof events where events[i]=[startDayi,endDayi].Everyevent i startsat startDayi andendsat endDayi.Youcanattend
  • 2024-04-11超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。
  • 2024-03-192024年3月18号题解
    DungeonMaster解题思路给格子编号,从1开始,这样我们就可以构建一个图对这个图跑迪杰斯特拉算法就可以得到我们需要的答案代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#include<limits.h>#defineuunsigned#
  • 2024-02-052024年2月5号总结
    P1194买礼物洛谷题目链接解题思路这个题目是一个最小生成树或者说是贪心的题目,在这里我们把买的东西定义成顶点,边是优惠的价格那么我们只要把每一个顶点连接起来可以了,但要注意优惠的价格​ 可能大于A,因此我们要比较A的价格和优惠的价格谁的花费少接下来就是最小生成树的
  • 2024-01-30对顶堆
    对顶堆是由一个大顶堆和一个小顶堆组成的数据结构,用来处理动态求解一个序列中第k大或者第k小的数据结构。其中大顶堆在小顶堆的下面,为什么这样设计呢?因为如果小顶堆的堆顶大于大顶堆的堆顶,那么对于小顶堆中的所有元素就大于大顶堆中的所有元素了。原理很简单:根据数学中不等式
  • 2024-01-30牛客周赛 Round 29
    C题:用桶处理字符串重排小红拿到了一个字符串,其中一定包含连续子串"xiao",和连续子串"hong"。请你将字符串重排,使得该字符串包含"xiaohong"的连续子串。较简单的做法:遍历字符串,给每个字符放到相应的桶中,然后先先输出目标字符串xiaohong,同时对桶进行相对应的调整。最后再按任意顺
  • 2024-01-25dijkstra算法(单源最短路径)
    单源最短路径是求解给定一个起点到其他所有的点的最短距离。适用的范围:有向图、边的权值没有负数洛谷测试链接代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>#include<stdboo
  • 2023-10-19堆优化迪氏最短单源路径原理及C++实现
    时间复杂度O(ElogE),E是边数。适用与稀疏图。使用前提边的权为正。可以非连通,非连通的距离为-1。原理优选队列(小根堆)记录两个数据:当前点到源点距离,当前点。先处理距离小的点;如果距离相等,先处理谁都可以。可以用pair记录,不用重写小于。优先队列只记录如下情况的距离:一,{0,源点}。二,
  • 2023-09-27C: Huffman Coding
     HuffmanCoding.h/*********************************************************************************@fileHuffmanCoding.h*@briefHuffmanCodinghttps://www.programiz.com/dsa/huffman-coding#google_vignette*IDEVSCODEhttps://w
  • 2023-09-1923. 合并 K 个升序链表
    给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4-
  • 2023-08-24【剑指Offer】63、数据流中的中位数
    【剑指Offer】63、数据流中的中位数题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用Ge
  • 2023-06-01堆栈算法模板
     动态维护中位数一般都是用双堆解决–同理:动态维护第K大数295.数据流的中位数难度困难800收藏分享切换为英文接收动态反馈中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr=[2,3,4] 的中位数是 3 。例如 arr=
  • 2023-05-2023-05-20 总结 Meeting rooms 系列3个题目
    题目列表:P1.【easy,会员】MeetingRooms-LeetCodeP2.【Mid,会员】MeetingRoomsII-LeetCodeP3.MeetingRoomsIII-LeetCodeP1.会员题,检测会议是否安排得开思路:非常简单,直接按starttime进行排序,然后检测是否有overlap即可时间:O(nlogn),空间:O(1)classSolut
  • 2023-04-25丑数
    classSolution{public:intres;priority_queue<int,vector<int>,greater<int>>minheap;unordered_set<int>s;//所有出现过的丑数放在集合中intgetUglyNumber(intn){minheap.push(1);while(s.size()<n){
  • 2023-02-17哈夫曼树
    1.定义1.1哈夫曼树哈夫曼树是一种最基本的压缩编码方法。对于如图所示的两棵二叉树,每个叶子节点都带有权值:从树中一个结点到另一个结点之间的分支构成两个结点之间的
  • 2023-02-02BM46 最小的K个数
    https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=295&tqId=23263&ru=%2Fpractice%2F253d2c59ec3e4bc68da16833f79a38e4&qru=%2Fta%2Fformat-top
  • 2022-11-01剑指offer——数据流中的中位数
    题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数