专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

面试高频系列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 道题目,部分是有锁题,我们将先将所有不带锁的题目刷完。
  在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

儿子沉迷电子游戏,母亲进游戏群怒骂,却被网友怼了孩子沉迷游戏,多半还是家长的问题。满近日,某地一学生玩手游被发现,母亲进入游戏群情绪激动地发了多条语音控诉游戏群害了自己的儿子。你们这个是个什么群?为什么要拉我儿子进来这里?搞得我来电狂响里面,霍思燕算玩那个真心话大冒险游戏了吗?来电狂响中霍思燕扮演的李楠肯定玩真心话大冒险那个游戏了。因为李楠一直在强调对方也是有家庭的人,两个人只是游戏中的CP,那这不就是承认自己玩了这个游戏吗?有些网友觉得她没玩这个游戏,LOL又是一款拿来搞事情的皮肤,想炒成龙瞎那样?这两天光顾着看天使和莫甘娜的消息,元宝兑换新增了内容都没来得及关注,酒桶的冰原核弹偷偷摸摸的加入了元宝兑换,并且兑换的价格和龙瞎一样,需要5000元宝,冰原核弹酒桶这款皮肤也是国服17岁少年再破游戏世界纪录!1秒按8个键,手速快到眼睛根本跟不上大家好,这里是正惊游戏,我是你们的正惊小弟。不管大家是主机玩家还是PC玩家,肯定在小时候都玩过俄罗斯方块这个游戏。但是大家可能不知道的是,俄罗斯方块这款游戏的难度绝对处于第一梯队,春节后招聘游戏运营岗位需求增幅84。7想要了解更多的游戏资讯一定要关注游戏陀螺!每年春节过后都会迎来一波招聘潮,游戏行业也不例外。根据BOSS直聘发布的2019年春节后首周(2月9日2月15日)人才市场供需动态洞察报告恐怖游戏还愿让何老师上热搜就想打死他!万众期待的恐怖新作还愿终于正式发售了。许多玩家已经开始玩上这款游戏。该作故事背景是上世纪80年代的台湾,是一个家庭故事版本的恐怖故事,如果在深夜刷这游戏的话,相信很多玩家会被吓尿。几款地图最大的游戏,最后真的很大。NO5。GTA5地图面积126平方公里GTA5有着跟前几代一样开放的操作环境和庞大的地图,是许多主机玩家和PC的最爱,正是因为极大的地图,渲染精美的风景,丰富的有趣内容,导致GTA撒贝宁陪老婆李白逛街,下意识的举动被称为绝世好男人提起名嘴撒贝宁,很多人都会被他聪明的头脑和有趣的谈吐所折服,在这个看脸的时代,个子不高貌不惊人的他凭着才华收获了很多粉丝。2016年,他突然传出结婚的消息,太太李白是个肤白貌美长腿赛尔号老精灵还有没有再强化的价值?现在在更新新精灵之前,先回顾一下老精灵。到底怎样的怀旧精灵才算是有资格再强化,如果全员强化的话,肯定会对全体精灵造成影响,而最明显的就是不进化,一旦进化就是一大堆。这一点毋庸置疑,魔兽争霸各英雄临死前最后一句话都是啥?死骑对不起我点了契约来源魔坛情报局大魔法师大魔法师临死前,亲切的拉着山丘的手说记的给我。烧。两。个。女。巫。。山丘之王山丘之王临死前,亲切的拉着血法的手说记的。。给我。。烧。双鞋要。。250块。。钱。DNF这个武器带上就封号,怎么解决?DNF是一个随时都有可能被制裁的游戏,打团制裁搬砖制裁,就算是站街也有可能被制裁,当然带武器被制裁甚至封号的也不在少数。比如如题主所示,带上这把武器3秒直接被制裁,好好看这把武器,
IG成德杯唯一全胜战队!翻盘击败LGD,4胜晋级!恐将成为明年黑马德玛西亚杯B组的比赛,迎来了IG和LGD的对决。因为两队之前都是3战全胜,所以这场比赛的胜者将直接晋级淘汰赛,最终LGD在前期巨大优势的情况下,惨遭IG翻盘,IG成为这次德杯目前唯B站独代横山克配乐!光隙解语异世界策略攻防手游预约近日,由bilibili独家代理发行的异世界策略攻防手游光隙解语开启预约。在这款中世纪奇幻风的游戏里,玩家将化身希望的灯火,与语者在百变战场正面迎敌,以降临技大招逆转战局,共同打破一梦江湖有哪些让人一听就落泪的台词?玩家副本熟练工一梦江湖已经开服三年有余,诞生至今承载了许多玩家少侠们的回忆和乐趣,不仅仅是各种有趣欢乐的体验,其中一梦江湖带给少侠们的感动时刻也不在少数,尤其是很多剧情和背景,充满了凄婉和令人潸魔兽争霸3人族UD和暗夜都是远程英雄带球,兽族却是剑圣带球魔兽争霸3中有着大量的法球道具,常用的法球道具,除了人族的火球兽族的电球精灵的毒球和亡灵的腐球之外,还有野外产出的冰球黑暗球和特殊道具死亡面具。又因为野外产出法球道具的难度实在太高方舟生存进化免费DLC失落之岛上线,主播靠猎杀巨型蝴蝶求生作为Steam平台相当热门的一款沙盒游戏,方舟生存进化有着庞大的玩家群体,目前该游戏全平台销量已经突破了2000万套。而在今天,方舟生存进化的最新免费DLC失落之岛正式上线Stea14号碎片商店巨变,鲁班三喜临门,孙策圣诞突袭,花木兰有好消息文可儿游戏说原创每个周二王者荣耀都会进行一次更新,这次也是马上要到了更新的时间了。这次更新是对一些英雄,像鲁班就在这次更新中得到了加强,而公孙离就得到了削弱。除了英雄调整之外,皮肤运用各种魔法在异世界展开冒险Forspoken是由SQUAREEnix旗下工作室LuminousProductions(夜光组)的全新原创作品,融合了魔法跑酷动作与独特故事的游戏体验,以美丽而残酷的异世界亚希为什么最近这些年欧美3A大作经常翻车?文飞云最近,赫赫有名的使命召唤系列新作使命召唤先锋和战地系列新作战地2042这两款游戏的接连翻车引发了很多热议。不止如此,前不久推出的GTA三部曲重制版也遭遇了差评如潮的情况,尤其LPL转会期即将落下帷幕。可谓是几家欢喜几家愁2021生机大会随着LPL转会期即将结束,也意味着今年这场转会大戏终于要落下帷幕,不过在各种爆料消息中,似乎还有很多选手在最后一天都没有找到合适的下家,而有的复出选手估计要复出代价热血传奇道士这个职业为什么玩的人那么多众所周知传奇这款游戏角色有着三个经典的职业,就是战士,法师和道士,这些不同职业的角色有着他们自己的一些特色,每个角色都有着属于自己的特色玩法,就比如道士这个角色就有着属于它的特色。活动抢先看铁血马队铸就钢铁后防,战神巴蒂征服实况绿茵意大利联赛时刻高级经纪人通过意大利联赛时刻高级经纪人活动,除了一众实力强大的球员外,还有机会获得马尔蒂尼,卡福和巴蒂这三位时刻球员!喜欢他们的玩家们,千万不要错过这次活动!活动时间
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软件