版权声明:本文为博主原创文章,遵循 版权协议,转载请附上原文出处链接和本声明。
小顶堆,实现golang的堆接口:
如果我要实现大顶堆,那么就要把上面这五个函数重复一遍吗,但其实只需要修改一个Less函数就行了,重复一遍有些多余。并且,实现堆接口也就实现了sort排序接口,排序接口里面通过sort.Reverse(sort.Interface)函数,可以得到一个逆转Less函数的新接口,是否可以在小顶堆的基础上,通过逆转Less函数得到大顶堆呢?我试过好多次,但写出来不太对,有没有大佬指点一下,谢谢
这个题目和 相似,都是考察对链表的操作。其实具体实现方式也差不多啦。
根据题干我们知道,给定的两个链表是有序的。假设 l1 指向其中一个链表的头部,l2 指向另一个链表的头部,并初始化 head 和 current,使它们指向一个默认的节点。我们比较 l1 指向节点的值 这个节点,current 指向下一个节点,l1 指向 l1的下一个节点,反之,则使 current.next 指向 l2 这个节点,current 指向下一个节点, l2 指向 l2的下一个节点。
注: l1 和 l2 存在有一个指向 空 时的处理方案是:将 current.next 指向不是空的的链表即可,因为给定的两个链表本身是有序的。// head 指向的是默认的节点,head.next 才是结果链表的头节点
每天进步一点点,加油!
算法教程项目,每天更新一题,点个 star 支持一下呀:
有疑问加站长微信联系(非本文作者)