范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

面试高频系列TopK问题的多种解法冒泡排序ampampamp快速排序ampampamp优先队列

  文章描述
  该文章是公众号:宫水三叶 博主的文章,一位女神级别的算法大佬,文章大都是讲算法的,公众号广告基本没有,只分享算法心得,解题思路不要不要的,一句话很强,
  原文链接:https://mp.weixin.qq.com/s/zVon8BE7l80-RT5bWdKCxA题目描述
  这是 LeetCode 上的 「703. 数据流中的第 K 大元素」 ,难度为 「Easy」 。
  设计一个找到数据流中第 k 大元素的类(class)。
  注意是排序后的第 k 大元素,不是第 k 个不同的元素。
  请实现 KthLargest 类:  KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。  int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。
  示例:  输入: ["KthLargest", "add", "add", "add", "add", "add"] [[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]  输出: [null, 4, 5, 5, 8, 8]  解释: KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]); kthLargest.add(3);   // return 4 kthLargest.add(5);   // return 5 kthLargest.add(10);  // return 5 kthLargest.add(9);   // return 8 kthLargest.add(4);   // return 8
  提示:  1 <= k <=  0 <= nums.length <=   <= nums[i] <=   <= val <=  最多调用 add 方法 次  题目数据保证,在查找第 k 大元素时,数组中至少有 k 个元素  冒泡排序解法(TLE)
  每次调用  add  时先将数装入数组,然后遍历 k  次,通过找 k  次最大值来找到 Top K。
  代码:  class KthLargest {     int k;     List list = new ArrayList<>(10009);     public KthLargest(int _k, int[] _nums) {         k = _k;         for (int i : _nums) list.add(i);     }     public int add(int val) {         list.add(val);         int cur = 0;         for (int i = 0; i < k; i++) {             int idx = findMax(cur, list.size() - 1);             swap(cur++, idx);         }         return list.get(cur - 1);      }     int findMax(int start, int end) {         int ans = 0, max = Integer.MIN_VALUE;         for (int i = start; i <= end; i++) {             int t = list.get(i);             if (t > max) {                 max = t;                 ans = i;             }         }         return ans;     }     void swap(int a, int b) {         int c = list.get(a);         list.set(a, list.get(b));         list.set(b, c);     } } 时间复杂度:  空间复杂度:  快速排序解法
  上述的解法时间复杂度是 的,当  k  很大的时候会超时。
  我们可以使用快排来代替冒泡。
  将复杂度变为 ,不能说 复杂度一定比 要低,但 通常更加接近 。
  本题的  n  的范围是 , 解法的效率等于一个常数为 15 以内的 算法:
  代码:  class KthLargest {     int k;     List list = new ArrayList<>(10009);     public KthLargest(int _k, int[] _nums) {         k = _k;         for (int i : _nums) list.add(i);     }          public int add(int val) {         list.add(val);         Collections.sort(list);         return list.get(list.size() - k);     } } 时间复杂度:  空间复杂度:
  PS. Collections.sort 内部最终会调用 Arrays.sort 进行排序。而 Arrays.sort() 本身不只有「双轴快排」一种实现,在排序数量少的情况下会直接使用「冒泡排序」,这里的分析是假定了 Collections.sort 最终使用的是 Arrays.sort 的「双轴快排」。  优先队列解法
  使用优先队列构建一个容量为  k  的小根堆。
  将  nums  中的前 k  项放入优先队列(此时堆顶元素为前 k  项的最大值)。
  随后逐项加入优先队列:  堆内元素个数达到  k  个: 加入项小于等于堆顶元素:加入项排在第  k  大元素的后面。直接忽略 加入项大于堆顶元素:将堆顶元素弹出,加入项加入优先队列,调整堆  堆内元素个数不足  k  个,将加入项加入优先队列
  将堆顶元素进行返回(数据保证返回答案时,堆内必然有  k  个元素)。
  代码:  class KthLargest {     int k;     PriorityQueue queue;     public KthLargest(int _k, int[] _nums) {         k = _k;         queue = new PriorityQueue<>(k, (a,b)->Integer.compare(a,b));         int n = _nums.length;         for (int i = 0; i < k && i < n; i++) queue.add(_nums[i]);         for (int i = k; i < n; i++) add(_nums[i]);     }     public int add(int val) {         int t = !queue.isEmpty() ? queue.peek() : Integer.MIN_VALUE;         if (val > t || queue.size() < k) {             if (!queue.isEmpty() && queue.size() >= k) {                 queue.poll();             }             queue.add(val);         }         return queue.peek();     } } 时间复杂度:最坏情况下, n  个元素入堆,都触发堆调整。复杂度为 空间复杂度:  最后
  这是我们「刷穿 LeetCode」系列文章的第  No.703  篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先将所有不带锁的题目刷完。
  在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

梅开N度?剑三屡上热门混脸熟,玩家你看大家是奔游戏来的么?你觉得一款游戏最长能火多久?有些人可能会回答5年,有些则会回答10年,只要有足够的人去玩去关注,那么凉凉就永远追不上自己,毕竟运营那些老寿星端游都有30岁的了。至于游戏如何保持长生瓶子称es狼队是2个极端1个将打团贯彻到底,1个运营做到极致2021年KPL秋季赛季后赛首周的比赛圆满结束后,也就意味着estarpro跟狼队这赛季至少4次交手,前3场都是在常规赛的S组当中,而第4次则是在季后赛胜者组第2轮。不过,严格来说魔兽赛季服盗贼玩家实现另类登顶,神装加身同级别难逢敌手各位怀旧服的小伙伴你们好,我是细细说,很高兴又跟大家见面了。魔兽世界发展到现在已经衍生出了很多的版本,不过目前主要还是以正式服TBC怀旧服和赛季服为主,至于永久服,可能也有一批拥趸LOL很特别的英雄,当她阵亡之后,系统会修改她的英雄名字通常来讲,经历时间越久的游戏,其中的彩蛋也会愈加有趣和丰富。这是因为游戏在长年累月的版本更新之中,每次新增几个小彩蛋,日积月累就会变得很多了。就拿英雄联盟来说,S12季前赛的LOL当二次元与放置结合绯石之心是创新手游?还是缝合怪?现在的二次元游戏圈内,立绘声优已经成了最基本的要素,做好这些是一款游戏达到及格线的前提条件,而真正能决定游戏生命周期的,还是落在核心玩法上。如果不好玩,一切都是白搭。作者卫冕用绯石11月全球收入环增67腾讯和平精英重回中国手游收入榜TOP1北京商报讯(记者卢扬周阳洋)12月7日,SensorTower发布2021年11月中国手游发行商在全球AppStore和GooglePlay的收入排名。数据显示,统计期内,腾讯网易冰雪传奇盟重英雄手游一天十几个区,爆率高大佬多可打金大家好啊,今天小编给大家带来一款传奇手游盟重英雄,这款超人气手游,每天开十几个新区,每天都有大佬回收元宝,那么我们今天就讲讲这里的打金法则,想玩的小伙伴可以私信作者哦一般我们玩冰雪永久皮肤活动将下线,集齐英雄全套皮肤,有特权,冰雪快跑上线王者荣耀共赏芳华活动差不多已进行2个星期了,很多小伙伴应该都换到永久皮肤了吧,还没确定兑换永久皮肤和永久英雄的小伙伴要注意了,共赏芳华活动的任务即将下线(2021年12月8日结束)元歌新皮肤上架,两天却只有12款,赛季面临结束,兰陵王有好消息对于元歌源梦新皮肤的设计大赛已经开启这点,相信多数玩家应该都是知晓的,毕竟,对于这类史诗品质但是只需60点券就能拿下的皮肤而言,玩家对它的关注简直不要太高。况且,很多玩家也都想知道元歌源梦皮肤设计开启,玩家自创系列质量突出,粉丝评价超越官方文游小妤提起王者荣耀的源梦系列皮肤,总会在玩家群体中引起不小的热潮,作为玩家自创和官方推出的独特皮肤,向来以高性价比而知名,该系列皮肤之前已推出三款,分别是蔡文姬的繁星游吟云中君的决战干燥季节,极限竞速地平线5冬季赛简介伴随着极限竞速地平线5的上线,车迷们的主战场也从英国转移到了墨西哥。现在,极限竞速地平线5S1赛季已经开赛,相较于英国,墨西哥的气候更为温暖干燥。而这也让不少已经熟悉季节赛的人,不
摩尔庄园手游怎么加好友摩尔庄园手游添加好友办法六一儿童节到了,这个特殊的日子里,摩尔庄园手游也已经正式上线。新的手游也和以前一样,有很强的社交属性,因此相信也有很多的玩家好奇什么时候可以加好友,这里就带来了具体的社交属性一览,NVIDIA为荒野大镖客救赎2等多款游戏引入RTX支持NVIDIA刚刚宣布了支持光线追踪和深度学习超级采样(DLSS)技术的游戏阵容,包括荒野大镖客救赎2彩虹六号围攻毁灭战士永恒和无人深空等游戏。此外,NVIDIA还宣布了几款全新的R魔兽怀旧服TBC进入了倒计时,艾泽拉斯如今是什么景象呢?前言TBC现在真正地进入倒计时,6月2号也就是明天早上6点,大家就可以去外域,去地狱火半岛做任务了,现在距离开服也就7个小时左右的时间。那么现在大家都在干些什么呢,艾泽拉斯大陆上又盘点炉石传说中的那些宝宝,打不赢就直接叫爸爸又到了一年一度的六一儿童节,各位大朋友小朋友们大家好呀。昨天公司人事发了一张图,家里有未满12岁子女的伙伴们下午放假半天。一时间炸出一堆12岁以下同事,以及表示现在怀孕算不算。各位S23战士之王敲定,爆发比肩铠皇,真伤强过吕布,0金币入手大家好,我是超大神兽。原创不易,期待您的关注。大家都知道,在王者荣耀中,战士英雄是非常关键和核心的位置。大多数战士都有非常强的整体实力,他们既有不错的输出能力,同时也有一定的控制效碎片商店更新,战令延长一周,两款皮肤返场,20点券给李逍遥拖尾相信对于碎片商店,玩家肯定是不陌生甚至非常期待每次调整的,毕竟有时候碎片商店里面是会更新出来自己想要的那款高品质皮肤的,并且由于皮肤的获取是依靠皮肤碎片的,所以基本是等于免费获取到为什么你打野的时候,经济总是垫底?蹭线是否有必要?在峡谷中不管哪一方,总共都有三条路线。分别交由五位英雄来掌管,自然分别由三位英雄主掌握三条路线,而辅助则作为团队的扛伤以及帮扶人员,他们要出宝石达到最低的经济需要做出最大的贡献。而EA躲避球游戏球胜大本营提供25级前免费玩将躲避球和多人团队射击游戏融合的球胜大本营从5月21日上市之后得到的不少玩家的好评,不过随着免费体验活动BlockParty的结束,大家似乎失去了免费加入游戏的机会。还好昨天该游戏神武4手游宠物鉴赏人家的新手宠可能比我六技能龙虾还厉害无忧拌吉祥,神武乐逍遥!各位小伙伴大家好,你们的小可爱吉祥又来了。在神武4手游中,宠物是很多玩家实力组成的重要部分。因为随着等级提升,宠物的成长率和资质上限都会越来越高,因此吉祥之旗舰游戏赛博朋克2077发行受打击,游戏开发商净利润低于预期据路透社5月31日报道,CDProjekt公司第一季度净利润下降64。7至3250万兹罗提(波兰的货币单位,约5655万人民币),低于市场预期,受其旗舰游戏赛博朋克2077推出后的小学发布摄手视频证明自己没使用吃鸡模拟器,网友手机好可怜!吃鸡之路千万条,还是伏地魔最牢靠,龙百万聊吃鸡又和各位小伙伴见面啦。本期有哪些趣闻趣事呢?咱们一起看一下。一,论吃鸡中卡视野的重要性在刺激战场游戏中有一种非常简单的操作小技巧,它就