• 2024-06-23数据结构/排序/堆排序 --- 逻辑讲解、代码实现、图形展示
    一、总体逻辑:    1.写一个交换的函数swap备用    2.写一个维护堆的性质的函数heapify备用    3.数组-> 堆(不明白的别急,后面会详细解释)    4.维护整个堆(看不懂别急别急别急)    5.堆顶和堆底的最后一个元素互换(不明
  • 2024-06-20堆排序|维护堆和建堆
    堆可以看作各个元素之前有前后续的特殊数组,当然也是一颗完全二叉树。设堆heap的元素为heap[1,2,3,...,heap_size]。注意0<=heap_size<=heap.len,并且节点从1开始计数(便于计算)。1.寻找节点1.1寻找父节点若节点编号为i
  • 2024-06-20【LeetCode】215.数组中的第K个最大元素
    题目描述给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2输出:5示例2:输入:[3,2
  • 2024-06-17C. Lexicographically Largest
    原题链接题解1.第\(i\)个位置上的数,对\(S\)的贡献最大不会超过\(a_i+i\),我们令其为\(c_i\)2.我们不去细想如何操作才能得到最优解,而是去想第一大的\(b\)是多少?第二大的\(b\)是多少?3.对\(c_i\)降序排序得到\(b_i\),如果所有\(b_i\)都不同,那么直接输出即可。4.但
  • 2024-06-09数据结构学习笔记-堆排序
    堆排序算法的设计与分析问题描述:设计并分析堆排序【前置知识:什么是堆?】堆(Heap)是一种特殊的树形数据结构,它满足以下两个条件之一:最大堆(MaxHeap):每个节点的值都大于或等于其子节点的值。换句话说,根节点的值是整个堆中最大的。最小堆(MinHeap):每个节点的值都小于或等于其
  • 2024-06-03取STL最大连通区域并写入体积信息python实现
    importtrimeshimportnumpyasnpimportargparsefromstlimportMeshdefmain(input_file,output_file,num,volume_info):#加载STL文件your_mesh=trimesh.load_mesh(input_file)#分割成连通域connected_components=your_mesh.split()#
  • 2024-04-17线性时间构造最大堆
    堆堆:是一个数组,近似的完全二叉树,除了最底层外,该树是完全充满的.最小堆:A[i]<=A[2i]&&A[i]<=A[2i+1]最大堆:A[i]>=A[2i]&&A[i]>=A[2i+1]下标从1开始算起维护堆max_heapify(A,i):维护最大堆的性质,让A[i]的值逐级下降if2*i<=len(A)andA[2*i]>A[i]:
  • 2024-03-19【堆排序】(大根堆)
    敬信仰赤诚,敬少年滚烫的情钟voidheapify(inta[],intn,inti){//根据当前节点i进行堆调整,保证以i为根节点的子树符合最大堆的性质intlargest=i;//假设当前节点为最大值的索引intleft=2*i+1;//计算左孩子节点索引intright=2*
  • 2024-01-05Largest Subsequence
    操作:选取词性最大的子序列,向右循环一次问你进行多少次这样的操作能使数组有序,如果不能就输出-1思路:首先要知道的是一个词性最大的序列整个右移过后,数组的新词性最大的序列就是之前的词性最大序列去了最后一个字母.找出词性最大的子序列intn; strings
  • 2023-12-17堆结构和堆排序
    堆堆是一种特殊的完全二叉树,其他语言中的优先级队列就是堆。堆分为大根堆和小根堆,大根堆即对于每一颗树,它的父亲节点的值,一定大于它的孩子节点的值,左右节点的值不用管它的顺序。小根堆同理。堆的实现通常是用数组实现的,那么对于每一个节点在数组中怎么找到它的父节点和它的左右
  • 2023-12-03堆排序
    目录1.基本原理2.例子3.代码实现本文主要介绍堆排序的原理、例子以及代码实现。1.基本原理堆排序(HeapSort)是一种基于比较的排序算法,它的工作原理是首先将待排序的序列构造成一个大顶堆或小顶堆,然后交换堆顶元素和最后一个元素,然后将剩余元素重新调整为大顶堆或小顶堆,再交换堆
  • 2023-11-13SPOJ1805 HISTOGRA - Largest Rectangle in a Histogram 题解
    LinkSPOJ1805HISTOGRA-LargestRectangleinaHistogramQuestion在一条水平线上有\(n\)个高为\(a_i\)的矩形,求包含于这些矩形的最大子矩形面积。Solution我们定义\(L_i\)表示有\(a_i\)这个高度的一根悬线,往左最多能平移到什么位置初始化显然,\(a_i=i\)考虑转移
  • 2023-10-09Go - Creating Heaps
    Problem: Youwanttocreateaminheapdatastructure.Solution: Wrapastructaroundasliceofelementstorepresentaheap.Aftereachpushorpopontheheap,rearrangetheheapstructure. AHeapisaspecialTree-baseddatastructureinwhichthe
  • 2023-09-19堆排序
    时间复杂度为O(n)voidheapify(vector<int>&nums,intn,inti){intlargest=i;//假设为父节点intlson=i*2+1;intrson=i*2+2;//找到最大值if(lson<n&&nums[lson]>nums[largest])swap(nums[lson],nums[largest]);if(rson<
  • 2023-09-15深入了解堆排序算法
    堆排序(HeapSort)是一种高效的、基于堆数据结构的排序算法,它具有稳定性和可预测的性能,适用于各种数据规模。本文将详细介绍堆排序的工作原理,提供示例和Python、Go、Java以及C语言的实现代码。堆排序的基本思想堆排序的核心思想是通过构建一个二叉堆,将待排序的数组转换为一个堆,然后反
  • 2023-08-17[53]Maximum Subarray
    ContentGivenanintegerarraynums,findthesubarraywiththelargestsum,andreturnitssum.Example1:Input:nums=[-2,1,-3,4,-1,2,1,-5,4]Output:6Explanation:Thesubarray[4,-1,2,1]hasthelargestsum6.Example2:Input:nums=[1]Output:1
  • 2023-08-01找出乱序数组第k大的数字(堆排序专场)
    使用堆排序来解决《乱序数组第k大的数字》先放上代码(虽然leetcode要求O(n),但是堆排序是O(nlogn))`classSolution{publicintfindKthLargest(int[]nums,intk){intheapSize=nums.length;buildHeap(nums,heapSize);for(inti=nums.length-1;i>=nums.length-
  • 2023-07-104.堆
    从0开始:左孩子 2*i+1右孩子 2*i+2父    (i-1)/2从1开始:左孩子 2*i           (i<<1)右孩子 2*i+1         (i<<1|1)父     i/2           (i>>1)      从1开始的比较容
  • 2023-07-02文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题
    五、MAX-HEAPIFY的代码效率较高,但第10行中的递归调用可能例外,它可能使某些编译器产生低效的代码。请用循环控制结构取代递归,重写MAX-HEAPIFY代码。文心一言:以下是使用循环控制结构取代递归调用的MAX-HEAPIFY代码:defmax_heapify(A,i):heap_size=len(A)le
  • 2023-06-14pytorch -- topk()
    torch.topk(input,k,dim=None,largest=True,sorted=True,out=None)->(Tensor,LongTensor) pytorch中文官网文档:http://www.mamicode.com/info-detail-2217311.html沿给定dim维度返回输入张量input中 k 个最大值。如果不指定dim,则默认为input的最后一维。如果为largest
  • 2023-06-12The XOR Largest Pair
    #include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>usingnamespacestd;intbit[32];intn,num[5211314];structTrie{ inttrie[5211314][2],tot=1; inlinevoidInsert(inta){
  • 2023-05-201094 The Largest Generation
    题目:Afamilyhierarchyisusuallypresentedbyapedigreetreewhereallthenodesonthesamelevelbelongtothesamegeneration.Yourtaskistofindthegenerationwiththelargestpopulation.InputSpecification:Eachinputfilecontainsonetestcas
  • 2023-05-121887. 使数组元素相等的减少操作次数
    1887.使数组元素相等的减少操作次数给你一个整数数组nums,你的目标是令nums中的所有元素相等。完成一次减少操作需要遵照下面的几个步骤:找出nums中的最大值。记这个值为largest并取其下标i(下标从0开始计数)。如果有多个元素都是最大值,则取最小的i。找出num
  • 2023-04-201094 The Largest Generation
    Afamilyhierarchyisusuallypresentedbyapedigreetreewhereallthenodesonthesamelevelbelongtothesamegeneration.Yourtaskistofindthegenerationwiththelargestpopulation.InputSpecification:Eachinputfilecontainsonetestcase.E
  • 2023-04-15算法-丑数2-构造小根堆
    intNthUglyNumber(intn){if(n==1)return1;List<long>arr=newList<long>();//这里用list,它会自己扩容,用数组就需要自己操作这些了arr.Add(1);int[]uglyArr={2,3,5};HashSet<long>hs=newHashSet<long>();hs.Add(1);