当前位置: 首页 > news >正文

什么网站下载素材做图的自己做网站怎么跳过备案

什么网站下载素材做图的,自己做网站怎么跳过备案,沈阳百度seo,视频生成链接白银挑战-堆能高效解决的经典问题 1.在数组中找第K大的元素 LeetCode215 https://leetcode.cn/problems/kth-largest-element-in-an-array/ 思路分析 主要解决方法有3个,选择法,堆查找法和快速排序法 方法1:选择法 先遍历一遍找到最大的…

白银挑战-堆能高效解决的经典问题

1.在数组中找第K大的元素

LeetCode215
https://leetcode.cn/problems/kth-largest-element-in-an-array/

思路分析

主要解决方法有3个,选择法,堆查找法和快速排序法

方法1:选择法
先遍历一遍找到最大的元素,再遍历一遍找第二大的,依次直到第K次就找到了目标值了

方法2:堆排序法
用大堆和小堆都可以,推荐"找最大用小堆,找最小用大堆,找中间用两个堆"

构造一个大小只有k的小根堆
堆满了之后,对于小根堆,并不一定所有新来的元素都可以入堆的,只有大于根元素的才可以插入到堆中,否则直接抛弃
完成之后此时根元素恰好时当前序列下第K大的元素

代码实现:
代码自己实现起来比较困难,可以使用jdk的优先队列来解决

  • 维护一个有k个元素的最小堆
  • 如果当前堆不满,直接添加
  • 堆满的时候,如果新读到的数小于堆顶,不操作;如果大于堆顶,将堆顶拿出,然后放入新读到的数,进而让堆自己调整内部结构

方法3:快速排序法
之前已经分析过了,见前面内容

代码实现

import java.util.PriorityQueue;class Solution {public int findKthLargest(int[] nums, int k) {if(k>nums.length){return -1;}int len = nums.length;// 使用一个含有k个元素的最小堆PriorityQueue<Integer> minHeap = new PriorityQueue<>(k, (a, b) -> a-b);for (int i = 0; i<k; i++){minHeap.add(nums[i]);}for(int i=k; i<len; i++){// 看一眼,不拿出,因为有可能没有必要替换Integer topEle = minHeap.peek();// 只要当前遍历的元素比堆顶元素大,堆顶弹出,遍历的元素进去if (nums[i] > topEle){minHeap.poll();minHeap.offer(nums[i]);}}return minHeap.peek();}
}

python中没有现成的二叉堆,要自己实现部分功能
参考:https://leetcode.cn/problems/kth-largest-element-in-an-array/solutions/1507044/by-flix-amc8/

2.堆排序原理

排序:升序用小,降序用大

大顶推:
根结点是整个结构最大的元素
将根结点拿走,剩下的重排,此时根结点就是第二大的元素
再拿走根结点,再排
以此类推,最后堆中只剩最后一个元素,此时拿走的数据也就排好序了

拿走重排的具体过程:移除堆顶元素,把下标为n的元素放到堆顶,再通过堆化的方法,将剩下的n-1个元素重新构建成堆

小顶堆与大顶堆类似

3.合并k个排序链表

LeetCode23. 合并 K 个升序链表
https://leetcode.cn/problems/merge-k-sorted-lists/

思路分析
问题有很多种方法,现在看使用堆排序如何解决

因为每个队列都是从小到大排序的,每次都要找最小的元素,所以用小根堆;
堆的大小定义,给了几个链表,堆就定义多大;
每次都将剩余节点的最小值加到输出链表尾部,然后进行堆调整;
最后堆空的时候,合并也就完成了。

代码实现

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeKLists(ListNode[] lists) {if (lists == null || lists.length == 0){return null;}PriorityQueue<ListNode> q = new PriorityQueue<>(Comparator.comparing(node -> node.val));for (int i = 0; i<lists.length; i++){if(lists[i] != null){q.add(lists[i]);}}ListNode dummy = new ListNode(0);ListNode tail = dummy;while(!q.isEmpty()){tail.next = q.poll();tail = tail.next;if(tail.next != null){q.add(tail.next);}}return dummy.next;}
}
http://www.yayakq.cn/news/693384/

相关文章:

  • 中国网站用Cn域名金融投资理财网站建设
  • 河南建筑公司实力排名网络规划与优化技术学什么
  • 深圳网站建设服务公内蒙古网站建设熊掌号
  • 公司部门网站设计模板熊掌号如何做网站
  • 学校加强网站建设gps建站步骤视频
  • 网站跳出率 报告网站建设满意度调查问卷
  • 旺苍网站建设jsp网站开发难点
  • wordpress教程下载网站主题怎么样给一些小网站做链接
  • 专门做音箱的网站公司网站备案需要多久
  • 炫酷的网站开发深圳app定制开发报价单
  • 高端手机网站 制作公司上海有名的科技公司
  • 高级网站建设有没有类似一起做网店的网站
  • 网站平台搭建和维护需要什么wordpress培训班
  • 河南网站建设首选公司苏州做网站优化的
  • 学做凉菜冷菜的网站wordpress获取用户名
  • 网站建设与管理学习收获开发者选项怎么设置最流畅
  • 如何查看网站外链招聘网站怎么做吸引人
  • 城市建设厅官方网站怎样自己制作手机app软件
  • 杭州群游科技网站做的魔域南昌哪个网站建设比较好
  • 做网站的企业是什么行业电子业网站建设
  • 搭建平台的近义词东营网站优化
  • 网站运营技术性高吗开发公司移留问题解决物业如何打报告
  • wordpress 360 vrseo实战技巧100例
  • wordpress无法搜索重庆seo整站优化设置
  • 免费个人网站建设报价wd设计视图可以做网站吗
  • 网站建设xunmei合肥公司建设网站首页
  • 关于做公司网站360免费wifi总是断断续续的掉线
  • 无锡网站制作推广网站备案 备注
  • 网站建设工作进度表网络营销的产品策略
  • 网站的主机地址企业网站内容模块