程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

1. 题目

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]提示:
0 <= len(arr) <= 100000
0 <= k <= min(100000, len(arr))

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/smallest-k-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 排序

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {sort(arr.begin(),arr.end());return vector<int>(arr.begin(),arr.begin()+k);}
};

2.2 优先队列(堆)

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {priority_queue<int,vector<int>,greater<int>> q;//小顶堆for(auto& a : arr)q.push(a);arr.clear();while(k--){arr.push_back(q.top());q.pop();}return arr;}
};

在这里插入图片描述

2.3 快排划分

参考此篇文章:LeetCode 215. 数组中的第K个最大元素(快速排序)

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {if(arr.empty()||(k==0))return {};findkth(arr,k,0,arr.size()-1);return vector<int> (arr.begin(), arr.begin()+k);}int findkth(vector<int>& arr, int& k, int l, int r){selectMid(arr,l,r);int p = arr[l];int i = l, j = r;while(i < j){while(i < j && arr[j] > p)j--;swap(arr[i],arr[j]);while(i < j && arr[i] <= p)i++;swap(arr[i],arr[j]);}if(i == k)return i;else if(i < k)return findkth(arr,k,i+1,r);return findkth(arr,k,l,i-1);}void selectMid(vector<int>& arr, int& l, int& r){int mid = l+((r-l)>>1);if(arr[mid] > arr[r])swap(arr[mid],arr[r]);if(arr[l] > arr[r])swap(arr[mid],arr[r]);if(arr[mid] > arr[l])swap(arr[mid],arr[l]);}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LruCache在美团DSP系统中的应用演进

背景 DSP系统是互联网广告需求方平台&#xff0c;用于承接媒体流量&#xff0c;投放广告。业务特点是并发度高&#xff0c;平均响应低&#xff08;百毫秒&#xff09;。 为了能够有效提高DSP系统的性能&#xff0c;美团平台引入了一种带有清退机制的缓存结构LruCache(Least Rec…

程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)

1. 题目 一个有名的理发师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在每次预约服务之间要有休息时间&#xff0c;因此她不能接受相邻的预约。给定一个预约请求序列&#xff0c;替理发师找到最优的预约集合&#xff08;总预约时间最长&#xff09;&am…

关于NLP自监督学习,面试时被问崩溃了!

不要错过文末福利❤扫盲自监督无监督&#xff08;有不少同学还答不上来自监督和无监督真正的区别&#xff0c;我不是针对谁。&#xff09;无监督学习&#xff1a;无监督学习不依赖任何标签值&#xff0c;通过对数据内在特征的挖掘&#xff0c;找到样本间的关系&#xff0c;比如…

智能支付稳定性测试实战

本文根据美团高级测试开发工程师勋伟在美团第43期技术沙龙“美团金融千万级交易系统质量保障之路”的演讲整理而成。主要介绍了美团智能支付业务在稳定性方向遇到的挑战&#xff0c;并重点介绍QA在稳定性测试中的一些方法与实践。 背景 美团支付承载了美团全部的交易流量&#…

程序员面试金典 - 面试题 16.01. 交换数字(位运算swap)

1. 题目 编写一个函数&#xff0c;不用临时变量&#xff0c;直接交换numbers [a, b]中a与b的值。 示例&#xff1a; 输入: numbers [1,2] 输出: [2,1]提示&#xff1a; numbers.length 2来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://le…

阿里巴巴达摩院对话团队招聘研究实习生!

招聘贴投放请联系微信xixiaoyao-1阿里巴巴-达摩院-对话智能团队正在招募研究实习生&#xff01;团队介绍达摩院对话智能&#xff08;Conversational AI&#xff09;团队成立于2014年&#xff0c;专注于人机对话前沿研究和大规模应用&#xff0c;打造了任务型对话开发平台 Dialo…

人物志 | 技术十年:美团第一位前端工程师潘魏增

导读 潘魏增&#xff0c;2006年毕业于南开大学电子系&#xff0c;2008年加入早期饭否团队。美团第一位前端工程师&#xff0c;现在是X项目组终端研发部的负责人。处女座&#xff0c;INTJ&#xff0c;喜欢Linux和Vim&#xff0c;崇尚开源&#xff0c;相信开源可以让世界变得更美…

程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)

1. 题目 给定一个有序整数数组&#xff0c;元素各不相同且按升序排列&#xff0c;编写一个算法&#xff0c;创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是&#xff1a;[0,-3,9,-10,null,5]&#xff0c;它可以表示下面这个高度平衡二…

算法岗校招已成“人间地狱”,还有办法上岸吗

由于一系列众所周知的原因&#xff0c;算法岗的竞争越来越激烈&#xff0c;知乎上有个问题&#xff0c;形象的将算法岗的秋招形势比喻成了“人间地狱”。虽然有夸张的成分&#xff0c;但也一定程度上反映了如今算法岗“僧多粥少”的现状。内卷焦虑、网络偏差影响下&#xff0c;…

LintCode 1753. 写作业(二分查找)

1. 题目 n个人&#xff0c;他们每个人需要独立做 m 份作业。 第 i 份作业需要花费 cost[i] 的时间。由于每个人的空闲时间不同&#xff0c;第 i 个人有 val[i] 的时间&#xff0c;这代表他做作业的总时间不会超过 val[i]。每个人都按照顺序&#xff0c;从1号作业开始&#xff…

美团容器平台架构及容器技术实践

本文根据美团基础架构部/容器研发中心技术总监欧阳坚在2018 QCon&#xff08;全球软件开发大会&#xff09;上的演讲内容整理而成。 背景 美团的容器集群管理平台叫做HULK。漫威动画里的HULK在发怒时会变成“绿巨人”&#xff0c;它的这个特性和容器的“弹性伸缩”很像&#xf…

全球1000+研究员在Twitter直播训练超大模型??

文 | 王思若将视角转换到2020年&#xff0c;OpenAI发布了拥有1750亿参数量的GPT-3, 在阅读理解、语言翻译、问答等多种任务展现了令人惊艳的效果&#xff0c;算法工程二者结合展现了大模型的“暴力美学”&#xff0c;也同时开启了千亿、万亿参数模型的 “军备竞赛”。从模型框架…

LintCode 1671. 玩游戏(贪心、难)

1. 题目 N 个人在玩游戏&#xff0c;每局游戏有一个裁判和 N-1 个平民玩家。给出一个数组 A, A[i] 代表玩家 i 至少需要成为平民 A[i] 次&#xff0c;返回最少进行游戏的次数。 样例 1: 输入&#xff1a;A [2, 2, 2, 2] 输出&#xff1a;3 解析&#xff1a; A[0] 2表示玩家…

美团点评基于 Flink 的实时数仓建设实践

引言 近些年&#xff0c;企业对数据服务实时化服务的需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景&#xff0c;介绍了美团如何通过 Flink 引擎构建实时数据仓库&#xff0c;从而提供高效、稳健的实时数据服务。此前我们美团技术博客发布过一篇文章《流计算框…

机器翻译做到头了?Meta开源NLLB翻译模型,支持200种语言互译

文 | Alex(凹非寺)源 | 量子位这个翻译模型&#xff0c;不仅支持200语言之间任意两两互译&#xff0c;还是开源的。Meta AI在发布开源大型预训练模型OPT之后&#xff0c;再次发布最新成果NLLB。NLLB的全称为No Language Left Behind&#xff0c;如果套用某著名电影&#xff0c;…

LintCode 1652. 区间异或 II

1. 题目 给定数组 A&#xff08;下标从0到n-1&#xff0c;n为数组长度&#xff09;&#xff0c;和一个查询列表。 每一项查询包括两个整数 i 和 k。 对于每次查询&#xff0c;计算Ai, A(i  1), ..., A(ik-1)的异或值。结果保存在列表中。 样例1 输入: A [1,2,3,4] and …

美团外卖Android平台化的复用实践

美团外卖平台化复用主要是指多端代码复用&#xff0c;正如美团外卖iOS多端复用的推动、支撑与思考文章所述&#xff0c;多端包含有两层意思&#xff1a;其一是相同业务的多入口&#xff0c;指美团外卖业务需要在美团外卖App&#xff08;下文简称外卖App&#xff09;和美团App外…

智源承认论文抄袭,相关责任人已离职!

文 | 金磊Alex(凹非寺)源 | 量子位“2处属于抄袭&#xff0c;4处引用不规范。”“相关责任人均已主动离职。”“大模型研究中心部门重组。”……一篇名为A Roadmap for Big Model、由百人联合完成的综述报告&#xff0c;因涉嫌抄袭在国内外学术圈引发了不小的关注。对此&#x…

LintCode 1689. k求和III(递归)

1. 题目 给出 n 个正整数和整数 k 以及一个目标数字 target. 在 n 个数中找出 k 个奇数 或 k 个偶数 使得和为target&#xff0c;输出方案数 样例 1: 给出 [1,2,3,4], k 2,target 4, 返回 1 输入: [1,2,3,4] 2 4 输出: 1 解释: 只有一个方案&#xff1a;[1,3].样例 2: 给…

美团扫码付小程序的优化实践

短短几年的时间&#xff0c;微信小程序已经从一颗小小的萌芽成长为参天大树&#xff0c;形成了较大规模的开发者生态系统&#xff0c;尤其是在支付、线下垂直领域潜力巨大。 作为领先的生活服务平台&#xff0c;美团的技术团队在小程序领域也进行了很多的探索和实践。像mpvue就…