Tisfy4 天前
算法·leetcode·题解·优先队列··有序集合·滑动窗口
LeetCode 3013.将数组分成最小总代价的子数组 II:两个堆维护k-1小 + 滑动窗口力扣题目链接:https://leetcode.cn/problems/divide-an-array-into-subarrays-with-minimum-cost-ii/
划破黑暗的第一缕曙光7 天前
c语言·数据结构·二叉树·
[数据结构]:4.二叉树_堆嗨,我是firdawn,本章将简单介绍,树,二叉树,满二叉树的概念,以及堆的实现和相关应用。下面的图是本章的思维导图,那么,让我们开始吧!
福赖10 天前
c++·内存··
《堆 / 栈 / 静态区区别、内存泄漏原因及排查》特点: 1.程序启动时分配 2.程序结束时释放 3.整个程序生命周期存什么:堆内存泄漏:程序员通过new/malloc在堆上分配了内存,后续既没有执行delete/free释放,又失去了所有指向该堆内存的指针,导致这块内存成为「不可访问的垃圾内存」—— 程序运行期间无法再使用,也无法释放,直到程序退出后由操作系统回收。
Q741_14714 天前
开发语言·c++·算法·leetcode·优先级队列·
C++ 优先级队列 大小堆 模拟 力扣 1046. 最后一块石头的重量 每日一题题目链接:力扣 1046. 最后一块石头的重量题目描述:示例 1: 输入:[2,7,4,1,8,1] 输出:1 解释: 先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1]; 再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1]; 再选出 2 和 1,得到 1,所以数组转换为 [1,1,1]; 再选出 1 和 1,得到 0,所以数组转换为 [1]; 最后剩下 1,返回 1。
源代码•宸17 天前
经验分享·后端·算法·面试·golang··内存逃逸
Golang原理剖析(逃逸分析)逃逸分析是编译器用于决定变量分配到堆上还是栈上的一种行为。函数的运行都是在栈上面运行的,在栈上面声明临时变量,分配内存,函数运行完毕之后,回收内存,每个函数的栈空间都是独立的,其他函数是无法进行访问,但是在某些情况下栈上面的数据需要在函数结束之后还能被访问,这时候就会设计到内存逃逸了,什么是逃逸,就是抓不住
长安er1 个月前
java·数据结构·算法·leetcode·
LeetCode215/347/295 堆相关理论与题目目录一、相关理论方法详解1.1 堆(Heap)的核心概念1.2 堆的数组表示1.3 堆的核心操作(1) 上浮(Sift Up / Bubble Up)
笨手笨脚の1 个月前
java·jvm··虚拟机栈·方法区
深入理解 Java 虚拟机-01 JVM 内存模型Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范》的规定,Java 虚拟机所管理的内存将会包括以下几个运行时数据区域:
罗湖老棍子2 个月前
数据结构·c++·算法··优先队列·
最小函数值(minval)(信息学奥赛一本通- P1370)有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Aix2+Bix+Ci(x∈N∗)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个)。
月明长歌2 个月前
java·数据结构·python·leetcode·
Java数据结构:PriorityQueue堆与优先级队列:从概念到手写大根堆写算法写到后面,会越来越频繁地遇到一种需求:我不想按进入顺序取数据(FIFO),我想按“重要程度/大小”取。比如任务调度、Dijkstra、Top-K、定时器、甚至游戏里“高优先级事件先处理”。这时候普通队列就不够用了,需要的是优先级队列(Priority Queue):支持“加入元素”和“取出最高优先级元素”。
EXtreme352 个月前
c语言·数据结构··时间复杂度·topk问题·算法分析
【数据结构】建堆操作:向上调整与向下调整的数学推导与性能对比🏠 个人主页: EXtreme35📚 个人专栏:堆(Heap)是一种特殊的完全二叉树数据结构,通常用于实现优先队列。堆的性质要求:在大顶堆中,任意节点的值都大于或等于其子节点的值;在小顶堆中,任意节点的值都小于或等于其子节点的值。堆排序(Heap Sort)是基于堆这种数据结构的一种高效排序算法,其核心操作在于元素的向上调整(AdjustUp)和向下调整(AdjustDown),这两种操作对于维护堆的性质至关重要。
EXtreme352 个月前
c语言·数据结构·算法··heap·完全二叉树·topk
【数据结构】打破线性思维:树形结构与堆在C语言中的完美实现方案🏠 个人主页: EXtreme35📚 个人专栏:前言:在计算机科学的浩瀚海洋中,数据结构是承载算法的基石。我们熟悉的数组和链表是线性的,它们简单直观,但在面对复杂的层级关系或特定的动态排序需求时,往往显得力不从心。本教程将带你从线性的世界迈入非线性的树(Tree)的世界,并最终聚焦于一种特殊的完全二叉树——堆(Heap)。
Hello_Embed3 个月前
数据结构·笔记·学习·链表·freertos·
FreeRTOS 入门(四):堆的核心原理大家好,我是 Hello_Embed。上一篇我们吃透了 ARM 架构的底层逻辑,搞懂了寄存器和栈如何支撑函数调用 —— 而这一篇,我们将聚焦 FreeRTOS 内存管理的 “半壁江山”——堆(Heap)。
少许极端3 个月前
数据结构·算法·leetcode·优先级队列··图解算法
算法奇妙屋(十二)-优先级队列(堆)这道题的算法原理十分简单, 直接建立大根堆即可, 这里简单梳理下题目意思简单易懂, 这里不过多赘述, 直接看图即可
ShineWinsu3 个月前
c语言·数据结构·c++·算法·面试·二叉树·
对于数据结构:堆的超详细保姆级解析——下(堆排序以及TOP-K问题)hello 大家,我们又见面了,在上一篇博客中,我们共同探索了如何实现堆这么一个数据结构,相信大家经过上篇博客的学习,对堆的了解程度以及掌握程度,都有了极大的水平提升。
ShineWinsu3 个月前
数据结构·c++·算法·计算机·二叉树·顺序表·
对于数据结构:堆的超详细保姆级解析—上hello 各位,咱们又见面啦~相信大家看到 “堆” 这个标题,再联想到上一篇咱们刚 “啃完” 的二叉树,心里多少会有点小嘀咕:二叉树都学得晕头转向了,堆又是什么 “厉害角色”?别慌,先给大家吃颗定心丸 —— 堆其实和二叉树关系紧密,它是完全二叉树的一种经典应用,掌握了二叉树的基础,再学堆,会顺畅很多~
徐子童3 个月前
java·数据结构·面试题·优先级队列··topk问题
数据结构---优先级队列(堆)通过前面的学习,知道了队列是一种先进先出的一种数据结构,但是在一些情况下,在出队列的时候,需要让优先级高的元素先出队列,此时一个普通队列就满足不了这个操作了
深思慎考3 个月前
数据结构·链表·递归··队列·合并链表
从合并两个链表到 K 个链表:分治思想的递进与堆优化在链表操作中,“合并有序链表” 是一个经典问题。从最初的 “合并两个升序链表”,到进阶的 “合并 K 个升序链表”,解法思路的演变不仅体现了算法效率的优化,更蕴含了 “分治思想” 从特殊到一般的应用逻辑。本文将一步步拆解问题,从基础解法到高效优化,带你理解如何用分治思维解决复杂问题。 题目链接
再睡一夏就好4 个月前
java·数据结构·c++·笔记·学习·
【C++闯关笔记】STL:deque与priority_queue的学习和使用上一篇文章:【C++闯关笔记】STL:stack与queue的学习和使用-CSDN博客下一篇文章:【C++闯关笔记】模板的特化-CSDN博客
派大星爱吃猫4 个月前
c语言·数据结构·
堆的概念、结构与应用详解堆是一种特殊完全二叉树,它不仅有完全二叉树的性质还具备其它特性,一般使用顺序结构的数组来存储数据。堆分为大根堆(也称为最大堆)和小根堆(最小堆)。
自信的小螺丝钉4 个月前
算法·leetcode·优先队列·
Leetcode 347. 前 K 个高频元素 堆 / 优先队列原题链接:Leetcode 347. 前 K 个高频元素进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。