首页 > 其他分享 >LeetCode 215. 数组中的第K个最大元素

LeetCode 215. 数组中的第K个最大元素

时间:2023-07-10 12:55:24浏览次数:41  
标签:215 return nums int Solution public 数组 LeetCode size

小根堆

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int,vector<int>,greater<int>> q;
        for(auto x:nums)
        {
            if(q.size()<k)
                q.push(x);
            else if(q.top()<x)
            {
                q.pop();
                q.push(x);   
            }
        }
        return q.top();
    }
};

大根堆

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int,vector<int>> q;
        for(auto x:nums)
            q.push(x);
        int t=k-1;
        while(t--)
            q.pop();
        return q.top();
    }
};

快速排序

class Solution {
public:
    int quick(vector<int>& q, int k,int l,int r)
    {
        if(l==r) return q[r];
        int x=q[(l+r)>>1];
        int i=l-1,j=r+1;
        while(i<j)
        {
            do i++;while(q[i]<x);
            do j--;while(q[j]>x);
            if(i<j) swap(q[i],q[j]);
        }
        int cnt=j-l+1;
        if(k<=cnt)//答案在左边
            return quick(q,k,l,j);
        else return quick(q,k-cnt,j+1,r);   
    }
    int findKthLargest(vector<int>& nums, int k) {
        return quick(nums,nums.size()-k+1,0,nums.size()-1);
    }
};

标签:215,return,nums,int,Solution,public,数组,LeetCode,size
From: https://www.cnblogs.com/tangxibomb/p/17540780.html

相关文章

  • python练手项目——给数组中的每个字段加上双引号
    前言工作中经常会遇到一种场景:复制值时,会复制出来几个甚至十几个字段。把这些字段放入SQL语句或者接口里面时,需要手动给每个字段加上引号,很浪费时间。因此我想要写一个python脚本,给字段自动加上引号。测试数据1:上海武汉广州深圳北京内蒙古呼和浩特2:张三,李四,王五,......
  • #yyds干货盘点# LeetCode程序员面试金典:区域和检索 - 数组不可变
    1.简述:给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含left和right)之间的nums元素的和,其中 left<=right实现NumArray类:NumArray(int[]nums)使用数组nums初始化对象intsumRange(inti,intj)返回数组nums 中索引 left 和 r......
  • 【java】数组的常用操作
    sortstaticvoidsort(int[]a):将a数组按照从小到大进行排序staticvoidsort(int[]a,intfromIndex,inttoIndex):将a数组的[fromIndex,toIndex)部分按照升序排列staticvoidsort(Object[]a):根据元素的自然顺序对指定对象数组按升序进行排序。static<T>voidsort(T......
  • 将二维数组扁平化,或者说变成一维数组
    代码:a=[[1,2],[3,4]]#扁平化b=[iforiteminaforiinitem]#或importnumpyasnpnpa=np.arrary(a)b=npa.ravel()#andb=npa.flatten()ravel和flatten的区别在于使用ravel形成的数据在修改后会影响np.array的源数据上面的代码使用ravel后修改b的值......
  • 算法题-生成窗口最大值数组
    https://leetcode.cn/problems/sliding-window-maximum/ classSolution{publicint[]maxSlidingWindow(int[]nums,intk){if(nums==null||nums.length==0||k<0){returnnull;}int[]result=newint[nums.length-k+1];......
  • LeetCode 207. 课程表
    classSolution{public:boolcanFinish(intn,vector<vector<int>>&pre){if(pre.empty()||pre[0].empty())returntrue;vector<vector<bool>>g(n,vector<bool>(n,false));for(autoq:pre)......
  • 1 数组
    数组1数组理论基础数组是存放在连续内存空间的相同类型数据的集合数组下标都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。在C++中二维数组在地址空间上是连......
  • 所有子数组中不平衡数字之和
    一个长度为n下标从0开始的整数数组arr的不平衡数字定义为,在sarr=sorted(arr)数组中,满足以下条件的下标数目:0<=i<n-1sarr[i+1]-sarr[i]>1这里,sorted(arr)表示将数组arr排序后得到的数组。给你一个下标从0开始的整数数组nums,请你返回它所有子数......
  • js 如何使用 join() 方法将数组的所有元素组成一个字符串。
    <html><body><scripttype="text/javascript">vararr=newArray(3);arr[0]="George"arr[1]="John"arr[2]="Thomas"document.write(arr.join());document.write("<br/>&q......
  • 牛客练习赛113 D 小红的数组操作(hard version)
    题目要求求出最小的总代价使得平均数为整数,转换式子可得实际就是求出a,b使得(a*x-b*y+sum)%n==0且a*p+b*q要最小,平均值的为sum/n,因此对sum进行操作使其成为n的倍数即可(a*x-b*y+sum)%n==0=>((a*x+sum)%n-b*y%n)%n==0因为(a*x+sum)%n<n,b*y%n<n,因此要想二者差求余数为0一定为(......