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

查企企官方网站做网站初中

查企企官方网站,做网站初中,大庆小程序开发,别人做的网站如何要回服务器1. 题目 设计一个算法#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例#xff1a; 输入#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出#xff1a; [1,2,3,4]提示#xff1a; 0 len(arr) 100000 0 k min(100000, len(arr))来…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:vectorint smallestK(vectorint arr, int k) {sort(arr.begin(),arr.end());return vectorint(arr.begin(),arr.begin()k);} };2.2 优先队列堆 class Solution { public:vectorint smallestK(vectorint arr, int k) {priority_queueint,vectorint,greaterint 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:vectorint smallestK(vectorint arr, int k) {if(arr.empty()||(k0))return {};findkth(arr,k,0,arr.size()-1);return vectorint (arr.begin(), arr.begin()k);}int findkth(vectorint 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,i1,r);return findkth(arr,k,l,i-1);}void selectMid(vectorint 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.sadfv.cn/news/2376/

相关文章: