美文网首页
最小的k个元素

最小的k个元素

作者: pw007992 | 来源:发表于2017-09-23 08:56 被阅读0次

题目描述:
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。

关键点:1.快速排序的应用
2.也可以尝试k次冒泡

class Solution {
public:
 //快排
    int quickSort(vector<int> &arr, int begin, int end){
      int i = begin, j = end;
      int x = arr[i];
        while(i < j){
            while(i < j && arr[j] >= x) j --;
            if(i < j){
                arr[i] = arr[j];
                i ++;
            }
            while(i < j && arr[i] < x) i ++;
            if(i < j){
                arr[j] = arr[i];
                j --;
            }
        }
        arr[i] = x;
        return i;
    }
    
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k){
        vector<int> result;
        int len = input.size();
        if(len == 0 || k > len)
            return result;
        if(len == k) return input;
        
        int begin = 0;
        int end = input.size() - 1;
        int index = quickSort(input, begin, end);
        while(index != k - 1){
            if(index > k - 1){
                end = index - 1;
                index = quickSort(input, begin, end);
            }
            else{
                begin = index + 1;
                index = quickSort(input, begin, end);
            }
        }
        vector<int> res(input.begin(), input.begin() + k); 
        return res;
    }
};

相关文章

  • 求输入元素中的前K大元素

    思路: 始终维持一个K个元素的最小堆,对输入的前K个元素,先构成一个K个元素的最小堆,然后对后面输入的每个元素,先...

  • 最小的k个元素

    题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是...

  • 应用: 排序,从小到大用最大堆,从大到小用最小堆 选出元素中的 top k 个top k 个最小数:数组前k个元素...

  • Leetcode简略题解

    LC23 合并k个有序链表 分治法 暴力k个指向k个链表头的指针找最小值O(KN) -> 维护k个元素的最小堆 O...

  • PriorityQueue 使用方法

    求最大k个元素的问题:使用小顶堆 求最小k个元素的问题:使用大顶堆 参考:1 采用PriorityQueue实现大...

  • 寻找最大的K个数

    解法1:可以使用容量为K的最小堆来存储最大的K个数,最小堆的堆顶元素就是最大K个数中最小的一个。每次新考虑一个数X...

  • K个最大(最小)元素的算法

    问题描述:给定具有个元素的全序集合,比较算符为,求最大的个元素,不要求排序。下面按照取K个最小值的情况讨论。基本思...

  • 2020-03-20 刷题2(堆)

    最小的k个数 采用最大堆(优先队列)的做法,首先将前k个元素入堆,剩下的元素依次与堆顶元素比较,如果更小,就将堆顶...

  • 优先队列找出最小的k个数

    优先队列内部维持了一个堆,堆的特点是堆顶元素最大(或最小),利用优先队列查找最小的k个数的方法:1、把前k个数当成...

  • 二叉搜索树中第K小的元素

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明:你可以假设 k ...

网友评论

      本文标题:最小的k个元素

      本文链接:https://www.haomeiwen.com/subject/ywxfextx.html