136.Kth Largest Element in an Array

2024-05-12 00:58
文章标签 element array 136 kth largest

本文主要是介绍136.Kth Largest Element in an Array,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.

For example,
Given [3,2,1,5,6,4] and k = 2, return 5.

Note: 
You may assume k is always valid, 1 ≤ k ≤ array's length.

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

求一个数组中第k大的元素。

方法一:选用小顶堆,topk的思想做。

方法二:选用快排做,每次划分返回划分的下标,然后判断继续划分是左边数组还是右边数组。

	int heap_size = 0;// 表示堆中有多少个元素/*** 返回数组中第k大元素(输入的k值合法)。* 采用小顶堆的思想,维护一个有k个元素的小顶堆。然后遍历后面的元素,如果比堆顶大则将堆顶置为该元素,否则不变。* topk的思想。* @param nums* @param k* @return*/public int findKthLargest(int[] nums, int k) {int[] heapArr = new int[k];heapArr = Arrays.copyOfRange(nums, 0, k);build_Min_Heap(heapArr);int len = nums.length;for(int i=k;i<len;i++){if(nums[i]>heapArr[0]){heapArr[0] = nums[i];min_Heapify(heapArr, 0);}}return  heapArr[0];}public void build_Min_Heap(int[] A) {// 给一个数据结构为Element的数组把它建成大顶堆  运行时间复杂度是 O(n)heap_size = A.length;for (int i = (heap_size - 1) / 2; i >= 0; i--) {min_Heapify(A, i);}}public void min_Heapify(int A[], int i) { // 维护最小堆的性质 时间复杂度是 lgn  维护以i为根节点的堆的最小堆的性质int l = i * 2 + 1;int r = (i + 1) * 2;int smallest = i;if (l < heap_size && A[l] < A[i]) {smallest = l;}if (r < heap_size && A[r] < A[smallest]) {smallest = r;}if (i != smallest) {   int temp;temp = A[smallest];A[smallest] = A[i];A[i] = temp;min_Heapify(A, smallest);}}


/*** 返回数组中第k大元素(输入的k值合法)。* 采用快排的思想,每次进行划分之后根据返回的下标确定下一步是要对左边数组进行划分还是右边数组进行划分。* @param nums* @param k* @return*/public int findKthLargest(int[] nums, int k) {int len = nums.length;int start = 0;int end = len-1;int index = partition(nums,start,end);while(index != k-1){if(index>k-1){end = index - 1;}else{start = index + 1;}index = partition(nums,start,end);}return nums[k-1];}/***  对数组input[start,end]中的元素进行划分。*  选择input[end]为枢纽元素privot,大于等于privot的放在左边,小于privot的放在右边。*  返回的是枢纽元素的下标。*/int partition(int [] input,int start,int end){int i = start-1;int j = start;int privot = input[end];int temp;for(;j<end;j++){if(input[j]>=privot){i++;temp = input[j];input[j] = input[i];input[i] = temp;}}i++;temp = input[i];input[i] = privot;input[end] = temp;return i;}



这篇关于136.Kth Largest Element in an Array的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981150

相关文章

【uva】11536-Smallest Sub-Array(区间移动问题)

一个区间移动的问题,1A了,感觉没什么好说的。。 13975926 11536 Smallest Sub-Array Accepted C++ 0.809 2014-08-01 11:00:20 #include<cstdio>#include<cstring>#include<iostream>using namespace std;#define INF 1 << 30

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

leetcode#496. Next Greater Element I

题目 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1’s elements in the corresponding places of nums

element-ui打包之后图标不显示,woff、ttf加载404

1、bug 起因 昨天在 vue 项目中编写 element-ui 的树形结构的表格,发现项目中无法生效,定位问题之后发现项目使用的 element-ui 的版本是 2.4.11 。看了官方最新版本是 2.15.14,然后得知 2.4.11 版本是不支持表格树形结构的。于是决定升级 element-ui 的版本,方便后续的开发。 升级之后本地简单的过了一遍系统功能,并没有发现有什么不妥,于

做一个问卷考试,标准答案对比用户填写的答案,array_diff 进行差集比对

if( empty(array_diff($answer_mark, $answer)) && empty(array_diff( $answer,$answer_mark))){//用户答题正确}else{// 答题错误} 做一个问卷考试,标准答案对比用户填写的答案,array_diff  进行差集比对   如用户填写的答案变量为answer   标准答案为answer_mark

Qt放Element网页滑动菜单栏

基于QTabWidget实现菜单 tabwidget.h #ifndef TAB_WIDGET_H#define TAB_WIDGET_H#include <QTabWidget>#include <QVariantAnimation>#include "customcomponent_global.h"class TabBarAnimation;class TabWidget : pu

[LeetCode] 238. Product of Array Except Self

题:https://leetcode.com/problems/product-of-array-except-self/description/ 题目 Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the product of all

[LeetCode] 215. Kth Largest Element in an Array

题:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not th

MyBatis - 使用foreach迭代List/Array的说明

在 MyBatis 中的 foreach 元素,主要用于迭代 集合数据 以动态生成执行语句;主要有 item、index、collection、open、separator、close 等属性 属性说明         collection:要迭代的数据集对象,必填项         item:迭代出的元素的别名,必填项         index:元素的序号(map时为k

element table 表格 span-method 某一列进行相同合并 支持树结构表格

须知 这是 vue2 版本,不过理论上 vue3 也能参考使用 可以直接打开 codepen 查看代码 效果图 代码 打不开 codepen 或者codepen 失效,查看下面代码参考 <script src="//unpkg.com/vue@2/dist/vue.js"></script><script src="//unpkg.com/element-ui@2.15.14/l